feat: 增加 DB Listen Port 映射规则

This commit is contained in:
Jiangjie.Bai
2022-09-21 20:56:40 +08:00
parent 567b62516a
commit a0c61ab8cb
10 changed files with 167 additions and 2 deletions

View File

@@ -1,15 +1,19 @@
# coding: utf-8
#
from orgs.mixins.api import OrgBulkModelViewSet
from rest_framework import generics, status
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet
from common.tree import TreeNodeSerializer
from common.mixins.api import SuggestionMixin
from ..utils import db_port_manager
from .. import serializers
from ..models import Application
__all__ = ['ApplicationViewSet']
__all__ = ['ApplicationViewSet', 'DBListenPortViewSet']
class ApplicationViewSet(SuggestionMixin, OrgBulkModelViewSet):
@@ -37,3 +41,27 @@ class ApplicationViewSet(SuggestionMixin, OrgBulkModelViewSet):
tree_nodes = Application.create_tree_nodes(queryset, show_count=show_count)
serializer = self.get_serializer(tree_nodes, many=True)
return Response(serializer.data)
class DBListenPortViewSet(GenericViewSet):
rbac_perms = {
'GET': 'applications.view_application',
'list': 'applications.view_application',
'db_info': 'applications.view_application',
}
http_method_names = ['get', 'post']
def list(self, request, *args, **kwargs):
ports = db_port_manager.get_already_use_ports()
return Response(data=ports, status=status.HTTP_200_OK)
@action(methods=['post'], detail=False, url_path='db-info')
def db_info(self, request, *args, **kwargs):
port = request.data.get("port")
db, msg = db_port_manager.get_db_by_port(port)
if db is None:
data = {'error': msg}
return Response(data=data, status=status.HTTP_404_NOT_FOUND)
serializer = serializers.AppSerializer(instance=db)
return Response(data=serializer.data, status=status.HTTP_201_CREATED)