Skip to content

Commit 23b6d94

Browse files
author
v_ycggyao
committed
feat(backend): doris新增DOS存储层管理【saas部分】 TencentBlueKing#14367
# Reviewed, transaction id: 65259
1 parent ab7d053 commit 23b6d94

File tree

8 files changed

+35
-9
lines changed

8 files changed

+35
-9
lines changed

dbm-ui/backend/configuration/constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ class SystemSettingsEnum(StrStructuredEnum):
148148
DORIS_COS_REGION = EnumField("DORIS_COS_REGION", _("Doris使用COS地域映射"))
149149
# Doris使用COS标签
150150
DORIS_COS_TAGGING = EnumField("DORIS_COS_TAGGING", _("Doris使用COS标签"))
151+
# Doris 低频存储开关
152+
DORIS_COS_SWITCH = EnumField("DORIS_COS_SWITCH", _("Doris低频存储开关"))
151153
# 小额绿通单据申请
152154
QUICK_MINOR_POAA = EnumField("QUICK_MINOR_POAA", _("小额绿通单据申请"))
153155
# 资源池独立业务,如果配置该变量,需要联动修改 MANAGE_TOPO::resource.idle.module的值

dbm-ui/backend/configuration/views/system.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,18 @@ def common_sqls(self, request, *args, **kwargs):
9494
def device_classes(self, request, *args, **kwargs):
9595
return Response(SystemSettings.get_setting_value(SystemSettingsEnum.DEVICE_CLASSES.value, default=[]))
9696

97+
@common_swagger_auto_schema(
98+
operation_summary=_("查询doris 低频存储开关"),
99+
tags=tags,
100+
)
101+
@action(methods=["GET"], detail=False)
102+
def doris_cos_switch(self, request, *args, **kwargs):
103+
return Response(
104+
SystemSettings.get_setting_value(
105+
SystemSettingsEnum.DORIS_COS_SWITCH.value, default={"DORIS_COS_SWITCH": False}
106+
)
107+
)
108+
97109
@common_swagger_auto_schema(operation_summary=_("查询环境变量"), tags=tags)
98110
@action(detail=False, methods=["get"])
99111
def environ(self, request):

dbm-ui/backend/db_services/bigdata/doris/query.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"""
1111
import json
1212

13-
from django.core import cache
13+
from django.core.cache import cache
1414
from django.forms import model_to_dict
1515
from django.utils.translation import gettext_lazy as _
1616

@@ -53,7 +53,7 @@ class DorisListRetrieveResource(BigDataBaseListRetrieveResource, DorisExportQuer
5353
InstanceRole.DORIS_FOLLOWER.value,
5454
InstanceRole.DORIS_OBSERVER.value,
5555
InstanceRole.DORIS_BACKEND_HOT.value,
56-
InstanceRole.DORIS_BACKEND_COLD.value,
56+
InstanceRole.DORIS_BACKEND_WARM.value,
5757
]
5858
fields = [
5959
*BigDataBaseListRetrieveResource.fields,
@@ -117,3 +117,11 @@ def get_clusters_master(cls, bk_biz_id: int, cluster_ids: list) -> dict:
117117
}
118118

119119
return cluster_stat_map
120+
121+
@classmethod
122+
def retrieve_cluster(cls, bk_biz_id: int, cluster_id: int) -> dict:
123+
"""查询集群详情"""
124+
cluster_details = cls.list_clusters(bk_biz_id, {"id": cluster_id}, limit=1, offset=0).data[0]
125+
details = cls._retrieve_cluster(cluster_details, cluster_id)
126+
details["cold_resource"] = cls.get_cold_resource(bk_biz_id, cluster_id)
127+
return details

dbm-ui/backend/tests/mock_data/ticket/doris_flow.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
"old_nodes": {
8686
"hot": [],
8787
"cold": [],
88+
"warm": [],
8889
"observer": [
8990
{"ip": "127.0.0.5", "bk_host_id": 1005, "bk_cloud_id": 0},
9091
{"ip": "127.0.1.4", "bk_host_id": 1004, "bk_cloud_id": 0},

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
DORIS_FOLLOWER_NEED = 3
2222
DORIS_OBSERVER_ZERO = 0
2323
DORIS_OBSERVER_MIN = 2
24-
DORIS_HOT_COLD_LIMIT = 2
24+
DORIS_HOT_WARM_LIMIT = 2
2525

2626
HDFS_DATANODE_MIN = 2
2727
HDFS_NAMENODE_NEED = 2
@@ -68,7 +68,7 @@ class Pulsar(StrStructuredEnum):
6868

6969
class Doris(StrStructuredEnum):
7070
HOT = EnumField("hot", _("hot"))
71-
COLD = EnumField("cold", _("cold"))
71+
WARM = EnumField("warm", _("warm"))
7272
FOLLOWER = EnumField("follower", _("follower"))
7373
OBSERVER = EnumField("observer", _("observer"))
7474

dbm-ui/backend/ticket/builders/doris/doris_apply.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
class DorisApplyDetailSerializer(BigDataApplyDetailsSerializer):
3434
http_port = serializers.IntegerField(help_text=_("http端口"), default=DORIS_DEFAULT_HTTP_PORT)
3535
query_port = serializers.IntegerField(help_text=_("输入端口"), default=DORIS_DEFAULT_QUERY_PORT)
36+
enable_cold_storage = serializers.BooleanField(help_text=_("是否建立低频存储"), default=False)
3637

3738
def validate(self, attrs):
3839
"""
@@ -75,8 +76,8 @@ def format_ticket_data(self):
7576
class DorisApplyResourceParamBuilder(builders.ResourceApplyParamBuilder):
7677
@classmethod
7778
def fill_instance_num(cls, next_flow_data, ticket_data, nodes_key):
78-
"""对doris的hot和cold角色填充实例数"""
79-
for role in ["hot", "cold"]:
79+
"""对doris的hot和warm角色填充实例数"""
80+
for role in ["hot", "warm"]:
8081
if role not in next_flow_data[nodes_key]:
8182
continue
8283

dbm-ui/backend/ticket/builders/doris/doris_scale_up.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828

2929

3030
class DorisScaleUpDetailSerializer(BigDataScaleDetailSerializer):
31+
enable_cold_storage = serializers.BooleanField(help_text=_("是否建立低频存储"), default=False)
32+
3133
def validate(self, attrs):
3234
attrs = super().validate(attrs)
3335

@@ -75,7 +77,7 @@ def format_ticket_data(self):
7577
"ip": "127.0.0.7"
7678
}
7779
],
78-
"cold": [
80+
"warm": [
7981
{
8082
"bk_cloud_id": 0,
8183
"bk_host_id": 0,

dbm-ui/backend/ticket/builders/doris/doris_shrink.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424

2525

2626
class DorisShrinkDetailSerializer(BigDataSingleClusterOpsDetailsSerializer):
27-
# 目前只支持hot/cold/observer节点缩容,不支持follower节点缩容
27+
# 目前只支持hot/warm/observer节点缩容,不支持follower节点缩容
2828
class NodesSerializer(serializers.Serializer):
2929
hot = serializers.ListField(help_text=_("hot信息列表"), child=serializers.DictField())
30-
cold = serializers.ListField(help_text=_("cold信息列表"), child=serializers.DictField())
30+
warm = serializers.ListField(help_text=_("warm信息列表"), child=serializers.DictField())
3131
observer = serializers.ListField(help_text=_("observer信息列表"), child=serializers.DictField())
3232

3333
old_nodes = NodesSerializer(help_text=_("nodes节点列表"))

0 commit comments

Comments
 (0)