mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-16 07:18:22 +00:00
perf: 优化 applet account 释放
This commit is contained in:
@@ -14,16 +14,16 @@ from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import ValidationError
|
||||
|
||||
from assets.const import CloudTypes
|
||||
from common.api import JMSModelViewSet
|
||||
from common.exceptions import JMSException
|
||||
from common.utils import random_string
|
||||
from common.utils import random_string, get_logger
|
||||
from common.utils.django import get_request_os
|
||||
from common.utils.http import is_true
|
||||
from orgs.mixins.api import RootOrgViewMixin
|
||||
from perms.models import ActionChoices
|
||||
from terminal.connect_methods import NativeClient, ConnectMethodUtil
|
||||
from terminal.models import EndpointRule
|
||||
from assets.const import CloudTypes
|
||||
from ..models import ConnectionToken
|
||||
from ..serializers import (
|
||||
ConnectionTokenSerializer, ConnectionTokenSecretSerializer,
|
||||
@@ -31,6 +31,7 @@ from ..serializers import (
|
||||
)
|
||||
|
||||
__all__ = ['ConnectionTokenViewSet', 'SuperConnectionTokenViewSet']
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
class RDPFileClientProtocolURLMixin:
|
||||
@@ -363,5 +364,11 @@ class SuperConnectionTokenViewSet(ConnectionTokenViewSet):
|
||||
@action(methods=['DELETE', 'POST'], detail=False, url_path='applet-account/release')
|
||||
def release_applet_account(self, *args, **kwargs):
|
||||
account_id = self.request.data.get('id')
|
||||
msg = ConnectionToken.release_applet_account(account_id)
|
||||
return Response({'msg': msg})
|
||||
released = ConnectionToken.release_applet_account(account_id)
|
||||
|
||||
if released:
|
||||
logger.debug('Release applet account success: {}'.format(account_id))
|
||||
return Response({'msg': 'released'})
|
||||
else:
|
||||
logger.error('Release applet account error: {}'.format(account_id))
|
||||
return Response({'error': 'not found or expired'}, status=400)
|
||||
|
@@ -11,7 +11,8 @@ from rest_framework.exceptions import PermissionDenied
|
||||
|
||||
from assets.const import Protocol
|
||||
from common.db.fields import EncryptCharField
|
||||
from common.utils import lazyproperty, pretty_string, bulk_get, reverse
|
||||
from common.exceptions import JMSException
|
||||
from common.utils import lazyproperty, pretty_string, bulk_get
|
||||
from common.utils.timezone import as_current_tz
|
||||
from orgs.mixins.models import JMSOrgBaseModel
|
||||
from terminal.models import Applet
|
||||
@@ -172,7 +173,7 @@ class ConnectionToken(JMSOrgBaseModel):
|
||||
|
||||
host_account = applet.select_host_account()
|
||||
if not host_account:
|
||||
return None
|
||||
raise JMSException({'error': 'No host account available'})
|
||||
|
||||
host, account, lock_key, ttl = bulk_get(host_account, ('host', 'account', 'lock_key', 'ttl'))
|
||||
gateway = host.gateway.select_gateway() if host.domain else None
|
||||
@@ -196,8 +197,7 @@ class ConnectionToken(JMSOrgBaseModel):
|
||||
if lock_key:
|
||||
cache.delete(lock_key)
|
||||
cache.delete(token_account_relate_key)
|
||||
return 'released'
|
||||
return 'not found or expired'
|
||||
return True
|
||||
|
||||
@lazyproperty
|
||||
def account_object(self):
|
||||
|
Reference in New Issue
Block a user