Skip to content

Commit c42f17e

Browse files
huangwentai-wendeliSecloud
authored andcommitted
fix(backend): 补充tendb版本升级序列化器字段 #12030
1 parent 81e9441 commit c42f17e

File tree

2 files changed

+40
-5
lines changed

2 files changed

+40
-5
lines changed

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,39 @@
1414

1515
from backend.flow.engine.controller.spider import SpiderController
1616
from backend.ticket import builders
17-
from backend.ticket.builders.common.base import DisplayInfoSerializer
18-
from backend.ticket.builders.tendbcluster.base import BaseTendbTicketFlowBuilder, TendbBaseOperateDetailSerializer
17+
from backend.ticket.builders.common.constants import MySQLBackupSource
18+
from backend.ticket.builders.tendbcluster.base import (
19+
BaseTendbTicketFlowBuilder,
20+
TendbBaseOperateDetailSerializer,
21+
fetch_cluster_ids,
22+
)
1923
from backend.ticket.constants import TicketType
2024

2125

2226
class TenDBLocalUpgradeSerializer(TendbBaseOperateDetailSerializer):
23-
class InfoSerializer(DisplayInfoSerializer):
27+
class InfoSerializer(serializers.Serializer):
28+
class VersionModelSerializer(serializers.Serializer):
29+
db_version = serializers.CharField(help_text=_("DB版本"), required=False)
30+
pkg_name = serializers.CharField(help_text=_("包名称"), required=False)
31+
charset = serializers.CharField(help_text=_("字符集"), required=False)
32+
db_module_name = serializers.CharField(help_text=_("DB模块名称"), required=False)
33+
2434
cluster_id = serializers.IntegerField(help_text=_("集群ID"))
2535
pkg_id = serializers.IntegerField(help_text=_("目标版本包ID"))
2636
new_db_module_id = serializers.IntegerField(help_text=_("数据库模块ID"), required=False)
37+
current_version = VersionModelSerializer(help_text=_("当前版本信息"), required=False)
38+
target_version = VersionModelSerializer(help_text=_("目标版本信息"), required=False)
2739

2840
infos = serializers.ListField(help_text=_("单据信息"), child=InfoSerializer())
2941
is_safe = serializers.BooleanField(help_text=_("是否做安全检测"), default=True)
3042
upgrade_local = serializers.BooleanField(help_text=_("是否本地升级"), default=True)
43+
backup_source = serializers.ChoiceField(help_text=_("备份源"), choices=MySQLBackupSource.get_choices())
44+
45+
def validate(self, attrs):
46+
cluster_ids = fetch_cluster_ids(attrs)
47+
super(TenDBLocalUpgradeSerializer, self).validated_cluster_latest_backup(cluster_ids, attrs["backup_source"])
48+
49+
return attrs
3150

3251

3352
class TenDBLocalUpgradeParamBuilder(builders.FlowParamBuilder):

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,42 @@
1414

1515
from backend.flow.engine.controller.spider import SpiderController
1616
from backend.ticket import builders
17-
from backend.ticket.builders.common.base import DisplayInfoSerializer
17+
from backend.ticket.builders.common.constants import MySQLBackupSource
1818
from backend.ticket.builders.tendbcluster.base import (
1919
BaseTendbTicketFlowBuilder,
2020
TendbBaseOperateDetailSerializer,
2121
TendbBaseOperateResourceParamBuilder,
22+
fetch_cluster_ids,
2223
)
2324
from backend.ticket.constants import TicketType
2425

2526

2627
class TenDBSpiderUpgradeSerializer(TendbBaseOperateDetailSerializer):
27-
class InfoSerializer(DisplayInfoSerializer):
28+
class InfoSerializer(serializers.Serializer):
29+
class VersionModelSerializer(serializers.Serializer):
30+
db_version = serializers.CharField(help_text=_("DB版本"), required=False)
31+
pkg_name = serializers.CharField(help_text=_("包名称"), required=False)
32+
charset = serializers.CharField(help_text=_("字符集"), required=False)
33+
db_module_name = serializers.CharField(help_text=_("DB模块名称"), required=False)
34+
2835
cluster_id = serializers.IntegerField(help_text=_("集群ID"))
2936
pkg_id = serializers.IntegerField(help_text=_("目标版本包ID"))
3037
new_db_module_id = serializers.IntegerField(help_text=_("数据库模块ID"), required=False)
3138
resource_spec = serializers.JSONField(help_text=_("资源规格参数"), required=False)
3239
old_nodes = serializers.JSONField(help_text=_("旧节点信息集合"))
40+
current_version = VersionModelSerializer(help_text=_("当前版本信息"), required=False)
41+
target_version = VersionModelSerializer(help_text=_("目标版本信息"), required=False)
3342

3443
infos = serializers.ListField(help_text=_("单据信息"), child=InfoSerializer())
3544
is_safe = serializers.BooleanField(help_text=_("是否做安全检测"), default=True)
3645
upgrade_local = serializers.BooleanField(help_text=_("是否本地升级"), default=False)
46+
backup_source = serializers.ChoiceField(help_text=_("备份源"), choices=MySQLBackupSource.get_choices())
47+
48+
def validate(self, attrs):
49+
cluster_ids = fetch_cluster_ids(attrs)
50+
super(TenDBSpiderUpgradeSerializer, self).validated_cluster_latest_backup(cluster_ids, attrs["backup_source"])
51+
52+
return attrs
3753

3854

3955
class TenDBSpiderUpgradeParamBuilder(builders.FlowParamBuilder):

0 commit comments

Comments
 (0)