Skip to content

Commit

Permalink
feat(backend): 拆分 API 部署 & proxypass接口权限统一 #2452
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangzhw8 committed Dec 10, 2023
1 parent 85e6adb commit 0200aa7
Show file tree
Hide file tree
Showing 61 changed files with 392 additions and 272 deletions.
7 changes: 4 additions & 3 deletions dbm-ui/backend/db_meta/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ def init_db_meta(sender, **kwargs):
from .models.spec import Spec

try:
logical_city = LogicalCity.objects.create(name="default")
BKCity.objects.create(bk_idc_city_name="default", logical_city=logical_city)
if not LogicalCity.objects.count():
logical_city = LogicalCity.objects.create(name="default")
BKCity.objects.create(bk_idc_city_name="default", logical_city=logical_city)
except Exception as err: # pylint: disable=broad-except:
logger.warning(f"City init occur error: {err}, maybe already init, ignore...")
logger.warning(f"City init occur error: {err}, ignore...")

# 初始化规格配置
try:
Expand Down
18 changes: 0 additions & 18 deletions dbm-ui/backend/db_meta/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,22 +102,4 @@
views.priv_manager.tendbsingle_biz_clusters,
name="priv_manager-tendbsingle-biz_clusters",
),
path(
"fake/tendbha/create_cluster", views.fake.fake_create_tendbha_cluster, name="fake-tendbha-create_cluster"
),
path(
"fake/tendbsingle/create_cluster",
views.fake.fake_create_tendbsingle,
name="fake-tendbsingle-create_cluster",
),
path(
"fake/tendbha/reset_cluster",
views.fake.fake_reset_tendbha_cluster,
name="fake-tendbha-reset_cluster",
),
path(
"fake/tendbcluster/reset_cluster",
views.fake.fake_reset_tendbcluster_cluster,
name="fake-tendbcluster-reset_cluster",
),
]
2 changes: 1 addition & 1 deletion dbm-ui/backend/db_proxy/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from backend.configuration.constants import DBType
from blue_krill.data_types.enum import EnumField, StructuredEnum

SWAGGER_TAG = _("透传服务")
SWAGGER_TAG = _("透传服务(proxypass)")

NGINX_PUSH_TARGET_PATH = "/usr/local/bkdb/nginx-portable/conf/cluster_service/"

Expand Down
2 changes: 1 addition & 1 deletion dbm-ui/backend/db_proxy/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
from backend.db_proxy.views.dns.views import DnsProxyPassViewSet
from backend.db_proxy.views.dumper.views import DumperProxyPassViewSet
from backend.db_proxy.views.hadb.views import HADBProxyPassViewSet
from backend.db_proxy.views.job_callback.views import JobCallBackViewSet
from backend.db_proxy.views.jobapi.views import JobApiProxyPassViewSet
from backend.db_proxy.views.nameservice.views import NameServiceProxyPassViewSet
from backend.db_proxy.views.redis_dts.views import DtsApiProxyPassViewSet
from backend.db_proxy.views.views import JobCallBackViewSet

routers = DefaultRouter(trailing_slash=True)
routers.register(r"", DnsProxyPassViewSet, basename="dns")
Expand Down
4 changes: 2 additions & 2 deletions dbm-ui/backend/db_proxy/views/bkrepo/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers

from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer


class UploadSerializer(BaseProxyPassSerialier):
class UploadSerializer(BaseProxyPassSerializer):
file = serializers.FileField(help_text=_("上传文件"))
32 changes: 16 additions & 16 deletions dbm-ui/backend/db_proxy/views/db_meta/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
from rest_framework import serializers

from backend.db_proxy.views import mock_data
from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer


class InstancesSerializer(BaseProxyPassSerialier):
class InstancesSerializer(BaseProxyPassSerializer):
logical_city_ids = serializers.ListField(
help_text=_("逻辑城市ID列表"), child=serializers.IntegerField(), allow_null=True, allow_empty=True, required=False
)
Expand All @@ -33,7 +33,7 @@ class Meta:
swagger_schema_fields = {"example": mock_data.INSTANCE_DATA_RESPONSE}


class SwapRoleSerializer(BaseProxyPassSerialier):
class SwapRoleSerializer(BaseProxyPassSerializer):
class SwapEleSerializer(serializers.Serializer):
class SwapInstanceSerializer(serializers.Serializer):
ip = serializers.IPAddressField()
Expand All @@ -46,7 +46,7 @@ class SwapInstanceSerializer(serializers.Serializer):
bk_cloud_id = serializers.IntegerField()


class TendisClusterSwapSerializer(BaseProxyPassSerialier):
class TendisClusterSwapSerializer(BaseProxyPassSerializer):
class PayloadSerializer(serializers.Serializer):
class IpPortSerializer(serializers.Serializer):
ip = serializers.CharField(help_text=_("实例IP"))
Expand All @@ -60,7 +60,7 @@ class IpPortSerializer(serializers.Serializer):
bk_cloud_id = serializers.IntegerField()


class UpdateStatusSerializer(BaseProxyPassSerialier):
class UpdateStatusSerializer(BaseProxyPassSerializer):
class UpdateStatusEleSerializer(serializers.Serializer):
ip = serializers.IPAddressField()
port = serializers.IntegerField(min_value=1025, max_value=65535)
Expand All @@ -72,31 +72,31 @@ class UpdateStatusEleSerializer(serializers.Serializer):
bk_cloud_id = serializers.IntegerField()


class EntryDetailSerializer(BaseProxyPassSerialier):
class EntryDetailSerializer(BaseProxyPassSerializer):
domains = serializers.ListField(help_text=_("查询的domain列表"), child=serializers.CharField())


class MachinesClusterSerializer(BaseProxyPassSerialier):
class MachinesClusterSerializer(BaseProxyPassSerializer):
hosts = serializers.ListField(help_text=_("查询的Hosts列表"), child=serializers.CharField())


class ClusterDetailSerializer(BaseProxyPassSerialier):
class ClusterDetailSerializer(BaseProxyPassSerializer):
cluster_ids = serializers.ListField(help_text=_("查询的集群IDs"), child=serializers.CharField())


class BKCityNameSerializer(BaseProxyPassSerialier):
class BKCityNameSerializer(BaseProxyPassSerializer):
logic_city_name = serializers.CharField(help_text=_("逻辑城市名称"))


class FakeTendbSingleCreateCluster(BaseProxyPassSerialier):
class FakeTendbSingleCreateCluster(BaseProxyPassSerializer):
storage_instance = serializers.CharField(help_text=_("实例"))
immute_domain = serializers.CharField(help_text=_("集群域名"))
name = serializers.CharField(help_text=_("集群名"), required=False)
bk_biz_id = serializers.IntegerField(help_text=_("业务ID"), required=False)
db_module_id = serializers.IntegerField(help_text=_("模块ID"), required=False)


class FakeTendbHACreateCluster(BaseProxyPassSerialier):
class FakeTendbHACreateCluster(BaseProxyPassSerializer):
proxies = serializers.ListField(help_text=_("代理列表"))
master_instance = serializers.CharField(help_text=_("master实例"))
slave_instance = serializers.CharField(help_text=_("slave实例"))
Expand All @@ -107,28 +107,28 @@ class FakeTendbHACreateCluster(BaseProxyPassSerialier):
slave_domain = serializers.CharField(help_text=_("从库域名"), required=False)


class FakeResetTendbHACluster(BaseProxyPassSerialier):
class FakeResetTendbHACluster(BaseProxyPassSerializer):
proxies = serializers.ListField(help_text=_("proxy列表"), child=serializers.CharField())
master_instance = serializers.CharField(help_text=_("master实例"))
slave_instance = serializers.CharField(help_text=_("slave实例"))
immute_domain = serializers.CharField(help_text=_("域名"))
slave_domain = serializers.CharField(help_text=_("slave域名"), required=False)


class BizClusterSerializer(BaseProxyPassSerialier):
class BizClusterSerializer(BaseProxyPassSerializer):
bk_biz_id = serializers.IntegerField(help_text=_("业务ID"))
immute_domains = serializers.ListField(help_text=_("域名列表"), child=serializers.CharField())


class ClusterInstanceSerializer(BaseProxyPassSerialier):
class ClusterInstanceSerializer(BaseProxyPassSerializer):
immute_domain = serializers.CharField(help_text=_("域名列表"))


class InstanceDetailSLZ(BaseProxyPassSerialier):
class InstanceDetailSLZ(BaseProxyPassSerializer):
ip = serializers.CharField(help_text=_("ip"))
port = serializers.IntegerField(help_text=_("port"))
bk_cloud_id = serializers.IntegerField(help_text=_("bk_cloud_id"))


class TendbInstancesSerializer(BaseProxyPassSerialier):
class TendbInstancesSerializer(BaseProxyPassSerializer):
entry_name = serializers.CharField(help_text=_("访问入口"))
10 changes: 10 additions & 0 deletions dbm-ui/backend/db_proxy/views/db_remote_service/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
"""
TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available.
Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved.
Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at https://opensource.org/licenses/MIT
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
"""
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers

from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer


class RPCSerializer(BaseProxyPassSerialier):
class RPCSerializer(BaseProxyPassSerializer):
addresses = serializers.ListField(help_text=_("实例列表"), child=serializers.CharField())
cmds = serializers.ListField(help_text=_("SQL命令列表"), child=serializers.CharField())
force = serializers.BooleanField(help_text=_("是否强制执行"), required=False, default=False)
Expand Down
4 changes: 0 additions & 4 deletions dbm-ui/backend/db_proxy/views/db_remote_service/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ class DRSApiProxyPassViewSet(BaseProxyPassViewSet):
DBMeta接口的透传视图
"""

def get_permissions(self):
# TODO: 内部服务接口,是否需要鉴权?
return [AllowAny()]

@common_swagger_auto_schema(
operation_summary=_("[db-remote-service]SQL远程执行"),
request_body=RPCSerializer(),
Expand Down
6 changes: 3 additions & 3 deletions dbm-ui/backend/db_proxy/views/dbconfig/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@

from backend.components.dbconfig.constants import FormatType, LevelName
from backend.db_proxy.views import mock_data
from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer
from backend.flow.consts import ConfigTypeEnum


class QueryConfItemSerializer(BaseProxyPassSerialier):
class QueryConfItemSerializer(BaseProxyPassSerializer):
bk_biz_id = serializers.CharField(help_text=_("业务ID"))
conf_file = serializers.CharField(help_text=_("conf_file 可以是,号分隔的多个文件名,返回结果是一个按照配置文件名组合的一个 list"))
conf_name = serializers.CharField(
Expand All @@ -39,7 +39,7 @@ class Meta:
swagger_schema_fields = {"example": mock_data.QUERY_CONF_ITEM_DATA_RESPONSE}


class BatchGetConfItemSerializer(BaseProxyPassSerialier):
class BatchGetConfItemSerializer(BaseProxyPassSerializer):
conf_file = serializers.CharField(
help_text=_("配置文件名,一般配置类型与配置文件一一对应,但如 mysql 5.6, 5.7 两个版本同" "属 dbconf 配置,所以有 MySQL-5.5, MySQL-5.6 两个配置文件")
)
Expand Down
4 changes: 0 additions & 4 deletions dbm-ui/backend/db_proxy/views/dbconfig/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,6 @@ class DBConfigProxyPassViewSet(BaseProxyPassViewSet):
DBConfig接口的透传视图
"""

def get_permissions(self):
# TODO: 内部服务接口,是否需要鉴权?
return [AllowAny()]

@common_swagger_auto_schema(
operation_summary=_("[dbconfig]查询配置项列表"),
request_body=QueryConfItemSerializer(),
Expand Down
4 changes: 2 additions & 2 deletions dbm-ui/backend/db_proxy/views/dbpriv/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
from django.utils.translation import ugettext as _
from rest_framework import serializers

from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer


class ProxyPasswordSerializer(BaseProxyPassSerialier):
class ProxyPasswordSerializer(BaseProxyPassSerializer):
class InstanceDetailSerializer(serializers.Serializer):
ip = serializers.CharField(help_text=_("实例ip"))
port = serializers.IntegerField(help_text=_("实例port"))
Expand Down
14 changes: 7 additions & 7 deletions dbm-ui/backend/db_proxy/views/dns/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
from rest_framework import serializers

from backend.db_proxy.views import mock_data
from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer


class GetAllDomainListSerializer(BaseProxyPassSerialier):
class GetAllDomainListSerializer(BaseProxyPassSerializer):
pass


Expand All @@ -24,7 +24,7 @@ class Meta:
swagger_schema_fields = {"example": mock_data.GET_ALL_DOMAIN_LIST_DATA_RESPONSE}


class GetDomainSerializer(BaseProxyPassSerialier):
class GetDomainSerializer(BaseProxyPassSerializer):
app = serializers.CharField(help_text=_("GCS业务英文缩写"), required=False)
domain_name = serializers.ListField(help_text=_("查询的域名列表"), child=serializers.CharField(), required=False)
ip = serializers.ListField(help_text=_("查询的IP列表"), child=serializers.CharField(), required=False)
Expand All @@ -36,7 +36,7 @@ class Meta:
swagger_schema_fields = {"example": mock_data.GET_DOMAIN_DATA_RESPONSE}


class DeleteDomainSerializer(BaseProxyPassSerialier):
class DeleteDomainSerializer(BaseProxyPassSerializer):
class DomainSerializer(serializers.Serializer):
domain_name = serializers.CharField(help_text=_("查询的域名"))
instances = serializers.ListField(help_text=_("实例列表"), child=serializers.CharField(), required=False)
Expand All @@ -50,7 +50,7 @@ class Meta:
swagger_schema_fields = {"example": mock_data.DELETE_DOMAIN_DATA_RESPONSE}


class BatchPostDomainSerializer(BaseProxyPassSerialier):
class BatchPostDomainSerializer(BaseProxyPassSerializer):
class BatchPostInstanceSetSerializer(serializers.Serializer):
old_instance = serializers.CharField(help_text=_("旧实例节点"))
new_instance = serializers.CharField(help_text=_("新实例节点"))
Expand All @@ -65,7 +65,7 @@ class Meta:
swagger_schema_fields = {"example": mock_data.BATCH_DELETE_DOMAIN_DATA_RESPONSE}


class PostDomainSerializer(BaseProxyPassSerialier):
class PostDomainSerializer(BaseProxyPassSerializer):
class PostInstanceSetSerializer(serializers.Serializer):
instance = serializers.CharField(help_text=_("新的实例节点"))

Expand All @@ -80,7 +80,7 @@ class Meta:
swagger_schema_fields = {"example": mock_data.POST_DOMAIN_DATA_RESPONSE}


class PutDomainSerializer(BaseProxyPassSerialier):
class PutDomainSerializer(BaseProxyPassSerializer):
class PutDomainDetailSerializer(serializers.Serializer):
domain_name = serializers.CharField(help_text=_("查询的域名"))
instances = serializers.ListField(help_text=_("实例列表"), child=serializers.CharField())
Expand Down
4 changes: 0 additions & 4 deletions dbm-ui/backend/db_proxy/views/dns/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ class DnsProxyPassViewSet(BaseProxyPassViewSet):
Dns接口的透传视图
"""

def get_permissions(self):
# TODO: 内部服务接口,是否需要鉴权?
return [AllowAny()]

@common_swagger_auto_schema(
operation_summary=_("[dns]获取所有ip、域名关系"),
request_body=serializers.GetAllDomainListSerializer(),
Expand Down
4 changes: 2 additions & 2 deletions dbm-ui/backend/db_proxy/views/dumper/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers

from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer


class DumperMigrateProxyPassSerializer(BaseProxyPassSerialier):
class DumperMigrateProxyPassSerializer(BaseProxyPassSerializer):
class DumperSwitchInfoSerializer(serializers.Serializer):
class SwitchInstanceSerializer(serializers.Serializer):
host = serializers.CharField(help_text=_("主机IP"))
Expand Down
4 changes: 2 additions & 2 deletions dbm-ui/backend/db_proxy/views/hadb/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers

from backend.db_proxy.views.serialiers import BaseProxyPassSerialier
from backend.db_proxy.views.serialiers import BaseProxyPassSerializer


class HADBProxyPassSerialier(BaseProxyPassSerialier):
class HADBProxyPassSerializer(BaseProxyPassSerializer):
name = serializers.CharField(help_text=_("名字"), required=False)
query_args = serializers.JSONField(help_text=_("查询参数"), required=False)
set_args = serializers.JSONField(help_text=_("设置参数"), required=False)
Loading

0 comments on commit 0200aa7

Please sign in to comment.