Skip to content

Commit ec89c4b

Browse files
committed
fix(backend): 补充部署类单据详情信息 #10195
# Reviewed, transaction id: 41472
1 parent 0188e8f commit ec89c4b

File tree

8 files changed

+78
-11
lines changed

8 files changed

+78
-11
lines changed

dbm-ui/backend/ticket/builders/common/bigdata.py

+19
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from backend.db_meta.models.cluster import Cluster
2222
from backend.db_meta.models.instance import StorageInstance
2323
from backend.db_services.dbbase.constants import IpSource
24+
from backend.db_services.ipchooser.query.resource import ResourceQueryHelper
2425
from backend.ticket.builders import BuilderFactory, TicketFlowBuilder
2526
from backend.ticket.builders.common.base import (
2627
BaseOperateResourceParamBuilder,
@@ -126,6 +127,18 @@ class BigDataApplyDetailsSerializer(BigDataDetailsSerializer):
126127
bk_cloud_id = serializers.IntegerField(help_text=_("云区域ID"))
127128
resource_spec = serializers.JSONField(help_text=_("资源申请规格"), required=False)
128129

130+
# display fields
131+
bk_cloud_name = serializers.SerializerMethodField(help_text=_("云区域"), read_only=True)
132+
city_name = serializers.SerializerMethodField(help_text=_("城市名"), read_only=True)
133+
134+
def get_bk_cloud_name(self, obj):
135+
clouds = ResourceQueryHelper.search_cc_cloud(get_cache=True)
136+
return clouds[str(obj["bk_cloud_id"])]["bk_cloud_name"]
137+
138+
def get_city_name(self, obj):
139+
city_code = obj["city_code"]
140+
return self.context["ticket_ctx"].city_map.get(city_code, city_code)
141+
129142
def get_node_count(self, attrs, role):
130143
if attrs["ip_source"] == IpSource.MANUAL_INPUT:
131144
return len(attrs["nodes"].get(role) or [])
@@ -179,6 +192,12 @@ def validate(self, attrs):
179192

180193
return attrs
181194

195+
def to_representation(self, instance):
196+
representation = super().to_representation(instance)
197+
representation["bk_cloud_name"] = self.get_bk_cloud_name(instance)
198+
representation["city_name"] = self.get_city_name(instance)
199+
return representation
200+
182201

183202
class BigDataReplaceDetailSerializer(BigDataSingleClusterOpsDetailsSerializer):
184203
old_nodes = serializers.DictField(help_text=_("旧节点信息集合"), child=serializers.ListField(help_text=_("节点信息")))

dbm-ui/backend/ticket/builders/mysql/mysql_ha_apply.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from django.utils.translation import ugettext_lazy as _
1515
from rest_framework import serializers
1616

17-
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE, SLAVE_DOMAIN_INITIAL_VALUE, AffinityEnum
17+
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE, SLAVE_DOMAIN_INITIAL_VALUE
1818
from backend.db_meta.enums import ClusterType
1919
from backend.db_meta.models import AppCache, DBModule
2020
from backend.db_services.dbbase.constants import IpSource
@@ -33,9 +33,6 @@
3333

3434

3535
class MysqlHAApplyDetailSerializer(MysqlSingleApplyDetailSerializer):
36-
disaster_tolerance_level = serializers.ChoiceField(
37-
help_text=_("容灾级别"), choices=AffinityEnum.get_choices(), required=False, default=AffinityEnum.NONE.value
38-
)
3936
start_proxy_port = serializers.IntegerField(
4037
help_text=_("Proxy起始端口"),
4138
required=False,

dbm-ui/backend/ticket/builders/mysql/mysql_single_apply.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
from backend.bk_web.constants import LEN_MIDDLE, SMALLEST_POSITIVE_INTEGER
1919
from backend.components import DBConfigApi
2020
from backend.components.dbconfig import constants as dbconf_const
21-
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE
21+
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE, AffinityEnum
2222
from backend.db_meta.enums import ClusterType
2323
from backend.db_meta.models import AppCache, DBModule
2424
from backend.db_services.dbbase.constants import IpSource
25+
from backend.db_services.ipchooser.query.resource import ResourceQueryHelper
2526
from backend.db_services.mysql.constants import DEFAULT_ORIGIN_MYSQL_PORT, SERVER_PORT_LIMIT_MAX, SERVER_PORT_LIMIT_MIN
2627
from backend.exceptions import ValidationError
2728
from backend.flow.engine.controller.mysql import MySQLController
@@ -66,6 +67,7 @@ class MysqlSingleApplyDetailSerializer(serializers.Serializer):
6667
db_module_name = serializers.SerializerMethodField(help_text=_("DB模块名"))
6768
city_name = serializers.SerializerMethodField(help_text=_("城市名"))
6869
spec_display = serializers.SerializerMethodField(help_text=_("机器规格展示名"))
70+
bk_cloud_name = serializers.SerializerMethodField(help_text=_("云区域"), read_only=True)
6971

7072
start_mysql_port = serializers.IntegerField(
7173
help_text=_("MySQL起始端口"),
@@ -74,11 +76,19 @@ class MysqlSingleApplyDetailSerializer(serializers.Serializer):
7476
max_value=SERVER_PORT_LIMIT_MAX,
7577
default=DEFAULT_ORIGIN_MYSQL_PORT,
7678
)
79+
disaster_tolerance_level = serializers.ChoiceField(
80+
help_text=_("容灾级别"), choices=AffinityEnum.get_choices(), required=False, default=AffinityEnum.NONE.value
81+
)
82+
83+
def get_bk_cloud_name(self, obj):
84+
clouds = ResourceQueryHelper.search_cc_cloud(get_cache=True)
85+
return clouds[str(obj["bk_cloud_id"])]["bk_cloud_name"]
7786

7887
def to_representation(self, instance):
7988
representation = super().to_representation(instance)
8089
self._format_domains(representation["domains"], instance)
8190
# TODO 缺少数据库版本和字符集,考虑封装 DBConfigHandler 来处理此类需求
91+
representation["bk_cloud_name"] = self.get_bk_cloud_name(instance)
8292
return representation
8393

8494
def validate(self, attrs):

dbm-ui/backend/ticket/builders/redis/redis_cluster_apply.py

+13
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from backend.configuration.handlers.password import DBPasswordHandler
1616
from backend.db_meta.enums import ClusterType
1717
from backend.db_services.dbbase.constants import IpSource
18+
from backend.db_services.ipchooser.query.resource import ResourceQueryHelper
1819
from backend.flow.engine.controller.redis import RedisController
1920
from backend.ticket import builders
2021
from backend.ticket.builders.common.base import CommonValidate, SkipToRepresentationMixin
@@ -48,6 +49,13 @@ class RedisClusterApplyDetailSerializer(SkipToRepresentationMixin, serializers.S
4849
resource_spec = serializers.JSONField(help_text=_("proxy部署方案"), required=False)
4950
cluster_shard_num = serializers.IntegerField(help_text=_("集群分片数"), required=False)
5051

52+
# display fields
53+
bk_cloud_name = serializers.SerializerMethodField(help_text=_("云区域"), read_only=True)
54+
55+
def get_bk_cloud_name(self, obj):
56+
clouds = ResourceQueryHelper.search_cc_cloud(get_cache=True)
57+
return clouds[str(obj["bk_cloud_id"])]["bk_cloud_name"]
58+
5159
def get_city_name(self, obj):
5260
city_code = obj["city_code"]
5361
return self.context["ticket_ctx"].city_map.get(city_code, city_code)
@@ -115,6 +123,11 @@ def validate(self, attrs):
115123

116124
return attrs
117125

126+
def to_representation(self, instance):
127+
representation = super().to_representation(instance)
128+
representation["bk_cloud_name"] = self.get_bk_cloud_name(instance)
129+
return representation
130+
118131

119132
class RedisClusterApplyFlowParamBuilder(builders.FlowParamBuilder):
120133
controllers = {

dbm-ui/backend/ticket/builders/redis/redis_instance_apply.py

+13
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from backend.configuration.handlers.password import DBPasswordHandler
1818
from backend.db_meta.models import Cluster, Machine, StorageInstance
1919
from backend.db_services.dbbase.constants import IpSource
20+
from backend.db_services.ipchooser.query.resource import ResourceQueryHelper
2021
from backend.flow.engine.controller.redis import RedisController
2122
from backend.iam_app.dataclass.actions import ActionEnum
2223
from backend.ticket import builders
@@ -50,6 +51,13 @@ class InstanceInfoSerializer(serializers.Serializer):
5051

5152
city_name = serializers.SerializerMethodField(help_text=_("城市名"))
5253

54+
# display fields
55+
bk_cloud_name = serializers.SerializerMethodField(help_text=_("云区域"), read_only=True)
56+
57+
def get_bk_cloud_name(self, obj):
58+
clouds = ResourceQueryHelper.search_cc_cloud(get_cache=True)
59+
return clouds[str(obj["bk_cloud_id"])]["bk_cloud_name"]
60+
5361
def get_city_name(self, obj):
5462
city_code = obj["city_code"]
5563
return self.context["ticket_ctx"].city_map.get(city_code, city_code)
@@ -69,6 +77,11 @@ def validate(self, attrs):
6977

7078
return attrs
7179

80+
def to_representation(self, instance):
81+
representation = super().to_representation(instance)
82+
representation["bk_cloud_name"] = self.get_bk_cloud_name(instance)
83+
return representation
84+
7285

7386
class RedisInstanceApplyFlowParamBuilder(builders.FlowParamBuilder):
7487
controller = RedisController.redis_instance_apply_scene

dbm-ui/backend/ticket/builders/sqlserver/sqlserver_ha_apply.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from django.utils.translation import ugettext_lazy as _
1414
from rest_framework import serializers
1515

16-
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE, SLAVE_DOMAIN_INITIAL_VALUE, AffinityEnum
16+
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE, SLAVE_DOMAIN_INITIAL_VALUE
1717
from backend.db_meta.enums import ClusterType
1818
from backend.db_meta.models import AppCache, DBModule
1919
from backend.db_services.dbbase.constants import IpSource
@@ -30,10 +30,6 @@
3030

3131

3232
class SQLServerHAApplyDetailSerializer(SQLServerSingleApplyDetailSerializer):
33-
disaster_tolerance_level = serializers.ChoiceField(
34-
help_text=_("容灾级别"), choices=AffinityEnum.get_choices(), required=False, default=AffinityEnum.NONE.value
35-
)
36-
3733
def validate(self, attrs):
3834
super().validate(attrs)
3935

dbm-ui/backend/ticket/builders/sqlserver/sqlserver_single_apply.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@
1616
from rest_framework import serializers
1717

1818
from backend.bk_web.constants import LEN_MIDDLE, SMALLEST_POSITIVE_INTEGER
19-
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE
19+
from backend.configuration.constants import MASTER_DOMAIN_INITIAL_VALUE, AffinityEnum
2020
from backend.db_meta.enums import ClusterType
2121
from backend.db_meta.models import AppCache, DBModule
2222
from backend.db_services.dbbase.constants import IpSource
2323
from backend.db_services.ipchooser.constants import BkOsType
24+
from backend.db_services.ipchooser.query.resource import ResourceQueryHelper
2425
from backend.exceptions import ValidationError
2526
from backend.flow.consts import DEFAULT_SQLSERVER_PORT
2627
from backend.flow.engine.controller.sqlserver import SqlserverController
@@ -70,8 +71,20 @@ class DomainSerializer(serializers.Serializer):
7071
help_text=_("SQLServer起始端口"), required=False, default=DEFAULT_SQLSERVER_PORT
7172
)
7273

74+
disaster_tolerance_level = serializers.ChoiceField(
75+
help_text=_("容灾级别"), choices=AffinityEnum.get_choices(), required=False, default=AffinityEnum.NONE.value
76+
)
77+
78+
# display fields
79+
bk_cloud_name = serializers.SerializerMethodField(help_text=_("云区域"), read_only=True)
80+
81+
def get_bk_cloud_name(self, obj):
82+
clouds = ResourceQueryHelper.search_cc_cloud(get_cache=True)
83+
return clouds[str(obj["bk_cloud_id"])]["bk_cloud_name"]
84+
7385
def to_representation(self, instance):
7486
representation = super().to_representation(instance)
87+
representation["bk_cloud_name"] = self.get_bk_cloud_name(instance)
7588
self._format_domains(representation["domains"], instance)
7689
return representation
7790

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

+6
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class TenDBClusterApplyDetailSerializer(serializers.Serializer):
3030
bk_cloud_id = serializers.IntegerField(help_text=_("云区域ID"))
3131
db_app_abbr = serializers.CharField(help_text=_("业务英文缩写"))
3232
cluster_name = serializers.CharField(help_text=_("集群名"))
33+
cluster_alias = serializers.CharField(help_text=_("集群别名(一般为中文别名)"), required=False, allow_blank=True)
3334
city_code = serializers.CharField(
3435
help_text=_("城市代码"), required=False, allow_blank=True, allow_null=True, default=""
3536
)
@@ -87,6 +88,11 @@ def validate(self, attrs):
8788
TendbBaseOperateDetailSerializer.validate_cluster_shard_num(attrs)
8889
return attrs
8990

91+
def to_representation(self, instance):
92+
representation = super().to_representation(instance)
93+
representation["bk_cloud_name"] = self.get_bk_cloud_name(instance)
94+
return representation
95+
9096

9197
class TenDBClusterApplyFlowParamBuilder(builders.FlowParamBuilder):
9298
controller = SpiderController.spider_cluster_apply_scene

0 commit comments

Comments
 (0)