|
14 | 14 |
|
15 | 15 | from backend.flow.engine.controller.spider import SpiderController
|
16 | 16 | from backend.ticket import builders
|
17 |
| -from backend.ticket.builders.common.base import DisplayInfoSerializer |
| 17 | +from backend.ticket.builders.common.constants import MySQLBackupSource |
18 | 18 | from backend.ticket.builders.tendbcluster.base import (
|
19 | 19 | BaseTendbTicketFlowBuilder,
|
20 | 20 | TendbBaseOperateDetailSerializer,
|
21 | 21 | TendbBaseOperateResourceParamBuilder,
|
| 22 | + fetch_cluster_ids, |
22 | 23 | )
|
23 | 24 | from backend.ticket.constants import TicketType
|
24 | 25 |
|
25 | 26 |
|
26 | 27 | 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 | + |
28 | 35 | cluster_id = serializers.IntegerField(help_text=_("集群ID"))
|
29 | 36 | pkg_id = serializers.IntegerField(help_text=_("目标版本包ID"))
|
30 | 37 | new_db_module_id = serializers.IntegerField(help_text=_("数据库模块ID"), required=False)
|
31 | 38 | resource_spec = serializers.JSONField(help_text=_("资源规格参数"), required=False)
|
32 | 39 | old_nodes = serializers.JSONField(help_text=_("旧节点信息集合"))
|
| 40 | + current_version = VersionModelSerializer(help_text=_("当前版本信息"), required=False) |
| 41 | + target_version = VersionModelSerializer(help_text=_("目标版本信息"), required=False) |
33 | 42 |
|
34 | 43 | infos = serializers.ListField(help_text=_("单据信息"), child=InfoSerializer())
|
35 | 44 | is_safe = serializers.BooleanField(help_text=_("是否做安全检测"), default=True)
|
36 | 45 | 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 |
37 | 53 |
|
38 | 54 |
|
39 | 55 | class TenDBSpiderUpgradeParamBuilder(builders.FlowParamBuilder):
|
|
0 commit comments