Merge: v3 to dev (#9160)

* fix: 修改 ConnectionTokenSecretSerializer

* perf: connect token secret (#9155)

Co-authored-by: feng <1304903146@qq.com>
Co-authored-by: Jiangjie.Bai <bugatti_it@163.com>

* feat: 作业迁移至个人级别

* perf: asset enabled (#9157)

Co-authored-by: feng <1304903146@qq.com>

* perf: 修改ConnectionTokenSecret Gateway数据结构; 修改Domain Gateway Model方法

* perf: ConnectionTokenSecret  返回 domain 信息

* refactor: 移动 Gateway Model 到 asset 目录下

* refactor: 移动 Gateway Model 单独到 gateway 文件中

* perf: 修改 GatewaySerializer 目录

* perf: 修改 GatewaySerializer 目录

Co-authored-by: fit2bot <68588906+fit2bot@users.noreply.github.com>
Co-authored-by: feng <1304903146@qq.com>
Co-authored-by: Aaron3S <chenyang@fit2cloud.com>
This commit is contained in:
Jiangjie.Bai
2022-12-06 11:03:14 +08:00
committed by GitHub
parent 9ef5f17d5e
commit 7842e3e5ab
23 changed files with 284 additions and 243 deletions

View File

@@ -1,13 +1,16 @@
from django.utils.translation import ugettext_lazy as _
from rest_framework import serializers
from acls.models import CommandGroup
from assets.models import Asset, Account, Platform
from common.drf.fields import ObjectRelatedField
from acls.models import CommandGroup, CommandFilterACL
from assets.models import Asset, Account, Platform, Gateway, Domain
from assets.serializers import PlatformSerializer, AssetProtocolsSerializer
from authentication.models import ConnectionToken
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
from perms.serializers.permission import ActionChoicesField
from users.models import User
from perms.serializers.permission import ActionChoicesField
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
from ..models import ConnectionToken
__all__ = [
'ConnectionTokenSecretSerializer',
@@ -53,21 +56,33 @@ class _ConnectionTokenAccountSerializer(serializers.ModelSerializer):
class _ConnectionTokenGatewaySerializer(serializers.ModelSerializer):
""" Gateway """
account = ObjectRelatedField(
required=False, source='select_account', queryset=Account.objects,
attrs=('id', 'name', 'username', 'secret', 'secret_type')
)
protocols = AssetProtocolsSerializer(many=True, required=False, label=_('Protocols'))
class Meta:
model = Asset
model = Gateway
fields = [
'id', 'address', 'port',
# 'username', 'password', 'private_key'
'id', 'name', 'address', 'protocols', 'account'
]
class _ConnectionTokenACLCmdGroupSerializer(serializers.ModelSerializer):
""" ACL command group"""
class _ConnectionTokenCommandFilterACLSerializer(serializers.ModelSerializer):
command_groups = ObjectRelatedField(
many=True, required=False, queryset=CommandGroup.objects,
attrs=('id', 'name', 'type', 'content', 'ignore_case', 'pattern'),
label=_('Command group')
)
reviewers = ObjectRelatedField(
many=True, queryset=User.objects, label=_("Reviewers"), required=False
)
class Meta:
model = CommandGroup
model = CommandFilterACL
fields = [
'id', 'type', 'content', 'ignore_case', 'pattern'
'id', 'name', 'command_groups', 'action', 'reviewers', 'priority', 'is_active'
]
@@ -87,7 +102,8 @@ class ConnectionTokenSecretSerializer(OrgResourceModelSerializerMixin):
account = _ConnectionTokenAccountSerializer(read_only=True, source='account_object')
gateway = _ConnectionTokenGatewaySerializer(read_only=True)
platform = _ConnectionTokenPlatformSerializer(read_only=True)
acl_command_groups = _ConnectionTokenACLCmdGroupSerializer(read_only=True, many=True)
domain = ObjectRelatedField(queryset=Domain.objects, required=False, label=_('Domain'))
command_filter_acls = _ConnectionTokenCommandFilterACLSerializer(read_only=True, many=True)
actions = ActionChoicesField()
expire_at = serializers.IntegerField()
expire_now = serializers.BooleanField(label=_('Expired now'), write_only=True, default=True)
@@ -97,8 +113,8 @@ class ConnectionTokenSecretSerializer(OrgResourceModelSerializerMixin):
model = ConnectionToken
fields = [
'id', 'value', 'user', 'asset', 'account',
'platform', 'acl_command_groups', 'protocol',
'gateway', 'actions', 'expire_at', 'expire_now',
'platform', 'command_filter_acls', 'protocol',
'domain', 'gateway', 'actions', 'expire_at', 'expire_now',
'connect_method'
]
extra_kwargs = {

View File

@@ -1,9 +1,10 @@
from django.utils.translation import ugettext_lazy as _
from rest_framework import serializers
from authentication.models import ConnectionToken
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
from ..models import ConnectionToken
__all__ = [
'ConnectionTokenSerializer', 'SuperConnectionTokenSerializer',
]