perf: 资产批量更新平台 (#10013)

Co-authored-by: feng <1304903146@qq.com>
pull/10015/head
fit2bot 2 years ago committed by GitHub
parent 1acfdf0398
commit 39e618c127
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,15 +2,17 @@
#
import django_filters
from django.db.models import Q
from django.shortcuts import get_object_or_404
from django.utils.translation import gettext as _
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.status import HTTP_200_OK
from accounts.tasks import push_accounts_to_assets_task, verify_accounts_connectivity_task
from assets import serializers
from assets.exceptions import NotSupportedTemporarilyError
from assets.filters import IpInFilterBackend, LabelFilterBackend, NodeFilterBackend
from assets.models import Asset, Gateway
from assets.models import Asset, Gateway, Platform
from assets.tasks import test_assets_connectivity_manual, update_assets_hardware_info_manual
from common.api import SuggestionMixin
from common.drf.filters import BaseFilterSet
@ -18,6 +20,7 @@ from common.utils import get_logger, is_uuid
from orgs.mixins import generics
from orgs.mixins.api import OrgBulkModelViewSet
from ..mixin import NodeFilterMixin
from ...notifications import BulkUpdatePlatformSkipAssetUserMsg
logger = get_logger(__file__)
__all__ = [
@ -109,6 +112,7 @@ class AssetViewSet(SuggestionMixin, NodeFilterMixin, OrgBulkModelViewSet):
("info", "assets.view_asset"),
)
extra_filter_backends = [LabelFilterBackend, IpInFilterBackend, NodeFilterBackend]
skip_assets = []
def get_serializer_class(self):
cls = super().get_serializer_class()
@ -144,6 +148,30 @@ class AssetViewSet(SuggestionMixin, NodeFilterMixin, OrgBulkModelViewSet):
return Response({'error': error}, status=400)
return super().create(request, *args, **kwargs)
def filter_bulk_update_data(self):
bulk_data = []
for data in self.request.data:
pk = data.get('id')
platform = data.get('platform')
if not platform:
bulk_data.append(data)
continue
asset = get_object_or_404(Asset, pk=pk)
platform = get_object_or_404(Platform, **platform)
if platform.type == asset.type:
bulk_data.append(data)
continue
self.skip_assets.append(asset)
return bulk_data
def bulk_update(self, request, *args, **kwargs):
bulk_data = self.filter_bulk_update_data()
request._full_data = bulk_data
response = super().bulk_update(request, *args, **kwargs)
if response.status_code == HTTP_200_OK and self.skip_assets:
user = request.user
BulkUpdatePlatformSkipAssetUserMsg(user, self.skip_assets).publish()
return response
class AssetsTaskMixin:
def perform_assets_task(self, serializer):
@ -155,7 +183,7 @@ class AssetsTaskMixin:
else:
asset = assets[0]
if not asset.auto_info['ansible_enabled'] or \
not asset.auto_info['ping_enabled']:
not asset.auto_info['ping_enabled']:
raise NotSupportedTemporarilyError()
task = test_assets_connectivity_manual(assets)
return task

@ -0,0 +1,25 @@
from django.utils.translation import ugettext as _
from notifications.notifications import UserMessage
class BulkUpdatePlatformSkipAssetUserMsg(UserMessage):
def __init__(self, user, assets):
super().__init__(user)
self.assets = assets
def get_html_msg(self) -> dict:
subject = _("Batch update platform in assets, skipping assets that do not meet platform type")
message = f'<ol>{"".join([f"<li>{asset}</li>" for asset in self.assets])}</ol>'
return {
'subject': subject,
'message': message
}
@classmethod
def gen_test_msg(cls):
from users.models import User
from assets.models import Asset
user = User.objects.first()
assets = Asset.objects.all()[:10]
return cls(user, assets)

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6fa80b59b9b5f95a9cfcad8ec47eacd519bb962d139ab90463795a7b306a0a72
size 137935
oid sha256:03f75000def71efcfb08e7c1ee8122f6997b1f82be6cb747b52c33aa8b75a7bf
size 138164

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-14 17:34+0800\n"
"POT-Creation-Date: 2023-03-19 23:52+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -169,7 +169,7 @@ msgstr "作成のみ"
#: assets/models/cmd_filter.py:36 assets/serializers/domain.py:19
#: assets/serializers/label.py:27 audits/models.py:48
#: authentication/models/connection_token.py:33
#: perms/models/asset_permission.py:64 perms/serializers/permission.py:35
#: perms/models/asset_permission.py:64 perms/serializers/permission.py:34
#: terminal/backends/command/models.py:20 terminal/models/session/session.py:32
#: terminal/notifications.py:95 terminal/serializers/command.py:17
#: tickets/models/ticket/apply_asset.py:16 xpack/plugins/cloud/models.py:212
@ -197,7 +197,7 @@ msgstr "ソース"
#: acls/models/base.py:102 acls/serializers/base.py:57
#: assets/serializers/asset/common.py:131 assets/serializers/gateway.py:28
#: audits/models.py:49 ops/models/base.py:18
#: perms/models/asset_permission.py:70 perms/serializers/permission.py:40
#: perms/models/asset_permission.py:70 perms/serializers/permission.py:39
#: terminal/backends/command/models.py:21 terminal/models/session/session.py:34
#: tickets/models/ticket/command_confirm.py:13 xpack/plugins/cloud/models.py:85
msgid "Account"
@ -447,7 +447,7 @@ msgstr "アカウントの確認"
#: assets/models/group.py:20 assets/models/label.py:18
#: assets/models/platform.py:21 assets/models/platform.py:76
#: assets/serializers/asset/common.py:74 assets/serializers/asset/common.py:151
#: assets/serializers/platform.py:133
#: assets/serializers/platform.py:132
#: authentication/serializers/connect_token_secret.py:103 ops/mixin.py:21
#: ops/models/adhoc.py:21 ops/models/celery.py:15 ops/models/celery.py:57
#: ops/models/job.py:91 ops/models/playbook.py:23 ops/serializers/job.py:19
@ -533,7 +533,7 @@ msgstr "エスクローされたパスワード"
#: accounts/serializers/account/account.py:75 applications/models.py:11
#: assets/models/label.py:21 assets/models/platform.py:77
#: assets/serializers/asset/common.py:127 assets/serializers/cagegory.py:8
#: assets/serializers/platform.py:94 assets/serializers/platform.py:134
#: assets/serializers/platform.py:93 assets/serializers/platform.py:133
#: perms/serializers/user_permission.py:26 settings/models.py:35
#: tickets/models/ticket/apply_application.py:13
msgid "Category"
@ -544,7 +544,7 @@ msgstr "カテゴリ"
#: acls/serializers/command_acl.py:18 applications/models.py:14
#: assets/models/_user.py:50 assets/models/automations/base.py:20
#: assets/models/cmd_filter.py:74 assets/models/platform.py:78
#: assets/serializers/asset/common.py:128 assets/serializers/platform.py:93
#: assets/serializers/asset/common.py:128 assets/serializers/platform.py:92
#: audits/serializers.py:48
#: authentication/serializers/connect_token_secret.py:116 ops/models/job.py:102
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:31
@ -562,6 +562,30 @@ msgstr "タイプ"
msgid "Asset not found"
msgstr "資産が存在しません"
#: accounts/serializers/account/account.py:144 acls/models/base.py:98
#: acls/models/login_acl.py:13 acls/serializers/base.py:55
#: acls/serializers/login_acl.py:21 assets/models/cmd_filter.py:24
#: assets/models/label.py:16 audits/models.py:44 audits/models.py:63
#: audits/models.py:141 authentication/models/connection_token.py:29
#: authentication/models/sso_token.py:16
#: notifications/models/notification.py:12
#: perms/api/user_permission/mixin.py:55 perms/models/asset_permission.py:58
#: perms/serializers/permission.py:30 rbac/builtin.py:122
#: rbac/models/rolebinding.py:49 terminal/backends/command/models.py:19
#: terminal/models/session/session.py:30 terminal/models/session/sharing.py:32
#: terminal/notifications.py:96 terminal/notifications.py:144
#: terminal/serializers/command.py:16 tickets/models/comment.py:21
#: users/const.py:14 users/models/user.py:911 users/models/user.py:942
#: users/serializers/group.py:18
msgid "User"
msgstr "ユーザー"
#: accounts/serializers/account/account.py:145
#: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:98 terminal/notifications.py:146
msgid "Date"
msgstr "日付"
#: accounts/serializers/account/backup.py:31
#: accounts/serializers/automations/base.py:36
#: assets/serializers/automations/base.py:34 ops/mixin.py:23 ops/mixin.py:103
@ -592,7 +616,7 @@ msgid "Key password"
msgstr "キーパスワード"
#: accounts/serializers/account/base.py:81
#: assets/serializers/asset/common.py:301
#: assets/serializers/asset/common.py:303
msgid "Spec info"
msgstr "特別情報"
@ -733,24 +757,6 @@ msgstr "レビュー担当者"
msgid "Active"
msgstr "アクティブ"
#: acls/models/base.py:98 acls/models/login_acl.py:13
#: acls/serializers/base.py:55 acls/serializers/login_acl.py:21
#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:44
#: audits/models.py:63 audits/models.py:141
#: authentication/models/connection_token.py:29
#: authentication/models/sso_token.py:16
#: notifications/models/notification.py:12
#: perms/api/user_permission/mixin.py:55 perms/models/asset_permission.py:58
#: perms/serializers/permission.py:31 rbac/builtin.py:122
#: rbac/models/rolebinding.py:49 terminal/backends/command/models.py:19
#: terminal/models/session/session.py:30 terminal/models/session/sharing.py:32
#: terminal/notifications.py:96 terminal/notifications.py:144
#: terminal/serializers/command.py:16 tickets/models/comment.py:21
#: users/const.py:14 users/models/user.py:911 users/models/user.py:942
#: users/serializers/group.py:18
msgid "User"
msgstr "ユーザー"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:65 terminal/const.py:67
#: terminal/models/session/session.py:43 terminal/serializers/command.py:18
@ -764,7 +770,7 @@ msgid "Regex"
msgstr "正規情報"
#: acls/models/command_acl.py:26 assets/models/cmd_filter.py:79
#: settings/serializers/basic.py:10 xpack/plugins/license/models.py:29
#: settings/serializers/basic.py:10 xpack/plugins/license/models.py:30
msgid "Content"
msgstr "コンテンツ"
@ -883,7 +889,7 @@ msgstr ""
#: authentication/templates/authentication/_msg_oauth_bind.html:12
#: authentication/templates/authentication/_msg_rest_password_success.html:8
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
#: settings/serializers/terminal.py:10 terminal/serializers/endpoint.py:61
#: settings/serializers/terminal.py:10 terminal/serializers/endpoint.py:62
msgid "IP"
msgstr "IP"
@ -908,7 +914,7 @@ msgstr "アプリケーション"
msgid "Can match application"
msgstr "アプリケーションを一致させることができます"
#: assets/api/asset/asset.py:143
#: assets/api/asset/asset.py:147
msgid "Cannot create asset directly, you should create a host or other"
msgstr ""
"資産を直接作成することはできません。ホストまたはその他を作成する必要がありま"
@ -1060,7 +1066,7 @@ msgid "Basic"
msgstr "基本"
#: assets/const/web.py:61 assets/models/asset/web.py:13
#: assets/serializers/asset/common.py:123 assets/serializers/platform.py:40
#: assets/serializers/asset/common.py:123 assets/serializers/platform.py:39
msgid "Script"
msgstr "脚本"
@ -1196,7 +1202,7 @@ msgstr "アドレス"
#: assets/models/asset/common.py:104 assets/models/platform.py:112
#: authentication/serializers/connect_token_secret.py:108
#: perms/serializers/user_permission.py:24
#: xpack/plugins/cloud/serializers/account_attrs.py:187
#: xpack/plugins/cloud/serializers/account_attrs.py:197
msgid "Platform"
msgstr "プラットフォーム"
@ -1210,6 +1216,10 @@ msgstr "ドメイン"
msgid "Labels"
msgstr "ラベル"
#: assets/models/asset/common.py:111 assets/serializers/asset/host.py:27
msgid "Info"
msgstr "情報"
#: assets/models/asset/common.py:283
msgid "Can refresh asset hardware info"
msgstr "資産ハードウェア情報を更新できます"
@ -1247,27 +1257,27 @@ msgstr "クライアントキー"
msgid "Allow invalid cert"
msgstr "証明書チェックを無視"
#: assets/models/asset/web.py:9 assets/serializers/platform.py:30
#: assets/models/asset/web.py:9 assets/serializers/platform.py:29
msgid "Autofill"
msgstr "自動充填"
#: assets/models/asset/web.py:10 assets/serializers/asset/common.py:120
#: assets/serializers/platform.py:32
#: assets/serializers/platform.py:31
msgid "Username selector"
msgstr "ユーザー名ピッカー"
#: assets/models/asset/web.py:11 assets/serializers/asset/common.py:121
#: assets/serializers/platform.py:35
#: assets/serializers/platform.py:34
msgid "Password selector"
msgstr "パスワードセレクター"
#: assets/models/asset/web.py:12 assets/serializers/asset/common.py:122
#: assets/serializers/platform.py:38
#: assets/serializers/platform.py:37
msgid "Submit selector"
msgstr "ボタンセレクターを確認する"
#: assets/models/automations/base.py:17 assets/models/cmd_filter.py:38
#: assets/serializers/asset/common.py:300 rbac/tree.py:35
#: assets/serializers/asset/common.py:302 rbac/tree.py:35
msgid "Accounts"
msgstr "アカウント"
@ -1307,7 +1317,7 @@ msgid "Date verified"
msgstr "確認済みの日付"
#: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:61
#: perms/serializers/permission.py:33 users/models/group.py:25
#: perms/serializers/permission.py:32 users/models/group.py:25
#: users/models/user.py:723
msgid "User group"
msgstr "ユーザーグループ"
@ -1396,7 +1406,7 @@ msgstr "フルバリュー"
msgid "Parent key"
msgstr "親キー"
#: assets/models/node.py:558 perms/serializers/permission.py:36
#: assets/models/node.py:558 perms/serializers/permission.py:35
#: tickets/models/ticket/apply_asset.py:14 xpack/plugins/cloud/models.py:96
msgid "Node"
msgstr "ノード"
@ -1423,45 +1433,45 @@ msgstr "有効化"
msgid "Ansible config"
msgstr "Ansible 構成"
#: assets/models/platform.py:44 assets/serializers/platform.py:61
#: assets/models/platform.py:44 assets/serializers/platform.py:60
msgid "Ping enabled"
msgstr "アセット ディスカバリを有効にする"
#: assets/models/platform.py:45 assets/serializers/platform.py:62
#: assets/models/platform.py:45 assets/serializers/platform.py:61
msgid "Ping method"
msgstr "資産検出方法"
#: assets/models/platform.py:46 assets/models/platform.py:59
#: assets/serializers/platform.py:63
#: assets/serializers/platform.py:62
msgid "Gather facts enabled"
msgstr "資産情報の収集を有効にする"
#: assets/models/platform.py:47 assets/models/platform.py:61
#: assets/serializers/platform.py:64
#: assets/serializers/platform.py:63
msgid "Gather facts method"
msgstr "情報収集の方法"
#: assets/models/platform.py:48 assets/serializers/platform.py:67
#: assets/models/platform.py:48 assets/serializers/platform.py:66
msgid "Change secret enabled"
msgstr "パスワードの変更が有効"
#: assets/models/platform.py:50 assets/serializers/platform.py:68
#: assets/models/platform.py:50 assets/serializers/platform.py:67
msgid "Change secret method"
msgstr "パスワード変更モード"
#: assets/models/platform.py:52 assets/serializers/platform.py:69
#: assets/models/platform.py:52 assets/serializers/platform.py:68
msgid "Push account enabled"
msgstr "アカウントのプッシュを有効にする"
#: assets/models/platform.py:54 assets/serializers/platform.py:70
#: assets/models/platform.py:54 assets/serializers/platform.py:69
msgid "Push account method"
msgstr "アカウントプッシュ方式"
#: assets/models/platform.py:56 assets/serializers/platform.py:65
#: assets/models/platform.py:56 assets/serializers/platform.py:64
msgid "Verify account enabled"
msgstr "アカウントの確認をオンにする"
#: assets/models/platform.py:58 assets/serializers/platform.py:66
#: assets/models/platform.py:58 assets/serializers/platform.py:65
msgid "Verify account method"
msgstr "アカウント認証方法"
@ -1473,23 +1483,23 @@ msgstr "メタ"
msgid "Internal"
msgstr "ビルトイン"
#: assets/models/platform.py:83 assets/serializers/platform.py:91
#: assets/models/platform.py:83 assets/serializers/platform.py:90
msgid "Charset"
msgstr "シャーセット"
#: assets/models/platform.py:85 assets/serializers/platform.py:119
#: assets/models/platform.py:85 assets/serializers/platform.py:118
msgid "Domain enabled"
msgstr "ドメインを有効にする"
#: assets/models/platform.py:87 assets/serializers/platform.py:118
#: assets/models/platform.py:87 assets/serializers/platform.py:117
msgid "Su enabled"
msgstr "アカウントの切り替えを有効にする"
#: assets/models/platform.py:88 assets/serializers/platform.py:101
#: assets/models/platform.py:88 assets/serializers/platform.py:100
msgid "Su method"
msgstr "アカウントの切り替え方法"
#: assets/models/platform.py:90 assets/serializers/platform.py:98
#: assets/models/platform.py:90 assets/serializers/platform.py:97
msgid "Automation"
msgstr "オートメーション"
@ -1498,11 +1508,19 @@ msgstr "オートメーション"
msgid "%(value)s is not an even number"
msgstr "%(value)s は偶数ではありません"
#: assets/notifications.py:12
msgid ""
"Batch update platform in assets, skipping assets that do not meet platform "
"type"
msgstr ""
"プラットフォームタイプがスキップされた資産に合致しない、資産内の一括更新プ"
"ラットフォーム"
#: assets/serializers/asset/common.py:119
msgid "Auto fill"
msgstr "自動充填"
#: assets/serializers/asset/common.py:130 assets/serializers/platform.py:96
#: assets/serializers/asset/common.py:130 assets/serializers/platform.py:95
#: authentication/serializers/connect_token_secret.py:28
#: authentication/serializers/connect_token_secret.py:66
#: perms/serializers/user_permission.py:25 xpack/plugins/cloud/models.py:99
@ -1515,19 +1533,19 @@ msgid "Node path"
msgstr "ノードパスです"
#: assets/serializers/asset/common.py:150
#: assets/serializers/asset/common.py:302
#: assets/serializers/asset/common.py:304
msgid "Auto info"
msgstr "自動情報"
#: assets/serializers/asset/common.py:226
#: assets/serializers/asset/common.py:228
msgid "Platform not exist"
msgstr "プラットフォームが存在しません"
#: assets/serializers/asset/common.py:261
#: assets/serializers/asset/common.py:263
msgid "port out of range (1-65535)"
msgstr "ポート番号が範囲外です (1-65535)"
#: assets/serializers/asset/common.py:268
#: assets/serializers/asset/common.py:270
msgid "Protocol is required: {}"
msgstr "プロトコルが必要です: {}"
@ -1588,10 +1606,6 @@ msgstr "システムバージョン"
msgid "OS arch"
msgstr "システムアーキテクチャ"
#: assets/serializers/asset/host.py:27
msgid "Info"
msgstr "情報"
#: assets/serializers/cagegory.py:9
msgid "Constraints"
msgstr "制約"
@ -1620,31 +1634,31 @@ msgstr "含まれない:/"
msgid "The same level node name cannot be the same"
msgstr "同じレベルのノード名を同じにすることはできません。"
#: assets/serializers/platform.py:26
#: assets/serializers/platform.py:25
msgid "SFTP enabled"
msgstr "SFTP が有効"
#: assets/serializers/platform.py:27
#: assets/serializers/platform.py:26
msgid "SFTP home"
msgstr "SFTP ルート パス"
#: assets/serializers/platform.py:43
#: assets/serializers/platform.py:42
msgid "Auth with username"
msgstr "ユーザー名で認証する"
#: assets/serializers/platform.py:71
#: assets/serializers/platform.py:70
msgid "Gather accounts enabled"
msgstr "アカウント収集を有効にする"
#: assets/serializers/platform.py:72
#: assets/serializers/platform.py:71
msgid "Gather accounts method"
msgstr "アカウントの収集方法"
#: assets/serializers/platform.py:78
#: assets/serializers/platform.py:77
msgid "Primary"
msgstr "主要"
#: assets/serializers/platform.py:120
#: assets/serializers/platform.py:119
msgid "Default Domain"
msgstr "デフォルト ドメイン"
@ -2494,15 +2508,15 @@ msgid "Ticket info"
msgstr "作業指示情報"
#: authentication/serializers/connection_token.py:20
#: perms/models/asset_permission.py:71 perms/serializers/permission.py:37
#: perms/serializers/permission.py:70
#: perms/models/asset_permission.py:71 perms/serializers/permission.py:36
#: perms/serializers/permission.py:69
#: tickets/models/ticket/apply_application.py:28
#: tickets/models/ticket/apply_asset.py:18
msgid "Actions"
msgstr "アクション"
#: authentication/serializers/connection_token.py:41
#: perms/serializers/permission.py:39 perms/serializers/permission.py:71
#: perms/serializers/permission.py:38 perms/serializers/permission.py:70
#: users/serializers/user.py:93 users/serializers/user.py:165
msgid "Is expired"
msgstr "期限切れです"
@ -2522,8 +2536,8 @@ msgstr "メール"
msgid "The {} cannot be empty"
msgstr "{} 空にしてはならない"
#: authentication/serializers/token.py:79 perms/serializers/permission.py:38
#: perms/serializers/permission.py:72 users/serializers/user.py:94
#: authentication/serializers/token.py:79 perms/serializers/permission.py:37
#: perms/serializers/permission.py:71 users/serializers/user.py:94
#: users/serializers/user.py:163
msgid "Is valid"
msgstr "有効です"
@ -2544,11 +2558,6 @@ msgstr "APIキー記号APIヘッダーを使用すると、すべてのリクエ
msgid "docs"
msgstr "ドキュメント"
#: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:98 terminal/notifications.py:146
msgid "Date"
msgstr "日付"
#: authentication/templates/authentication/_access_key_modal.html:48
msgid "Show"
msgstr "表示"
@ -2991,7 +3000,7 @@ msgstr "組織 ID"
msgid "The file content overflowed (The maximum length `{}` bytes)"
msgstr "ファイルの内容がオーバーフローしました (最大長 '{}' バイト)"
#: common/drf/parsers/base.py:189
#: common/drf/parsers/base.py:193
msgid "Parse file error: {}"
msgstr "解析ファイルエラー: {}"
@ -3242,11 +3251,11 @@ msgstr "投稿サイトニュース"
msgid "No account available"
msgstr "利用可能なアカウントがありません"
#: ops/ansible/inventory.py:189
#: ops/ansible/inventory.py:196
msgid "Ansible disabled"
msgstr "Ansible 無効"
#: ops/ansible/inventory.py:205
#: ops/ansible/inventory.py:212
msgid "Skip hosts below:"
msgstr "次のホストをスキップします: "
@ -4443,7 +4452,7 @@ msgid "SSO auth key TTL"
msgstr "Token有効期間"
#: settings/serializers/auth/sso.py:17
#: xpack/plugins/cloud/serializers/account_attrs.py:184
#: xpack/plugins/cloud/serializers/account_attrs.py:194
msgid "Unit: second"
msgstr "単位: 秒"
@ -5547,7 +5556,7 @@ msgid "Redis port"
msgstr "Redis ポート"
#: terminal/models/component/endpoint.py:29
#: terminal/models/component/endpoint.py:98 terminal/serializers/endpoint.py:64
#: terminal/models/component/endpoint.py:98 terminal/serializers/endpoint.py:66
#: terminal/serializers/storage.py:38 terminal/serializers/storage.py:50
#: terminal/serializers/storage.py:80 terminal/serializers/storage.py:90
#: terminal/serializers/storage.py:98
@ -5811,15 +5820,15 @@ msgstr "アカウント"
msgid "Timestamp"
msgstr "タイムスタンプ"
#: terminal/serializers/endpoint.py:14
#: terminal/serializers/endpoint.py:15
msgid "Oracle port"
msgstr "Oracle ポート"
#: terminal/serializers/endpoint.py:17
#: terminal/serializers/endpoint.py:18
msgid "Oracle port range"
msgstr "Oracle がリッスンするポート範囲"
#: terminal/serializers/endpoint.py:19
#: terminal/serializers/endpoint.py:20
msgid ""
"Oracle proxy server listen port is dynamic, Each additional Oracle database "
"instance adds a port listener"
@ -5827,13 +5836,13 @@ msgstr ""
"Oracle プロキシサーバーがリッスンするポートは動的です。追加の Oracle データ"
"ベースインスタンスはポートリスナーを追加します"
#: terminal/serializers/endpoint.py:35
#: terminal/serializers/endpoint.py:36
msgid "Visit IP/Host, if empty, use the current request instead"
msgstr ""
"IP/ホストにアクセスします。空の場合は、代わりに現在のリクエストのアドレスを使"
"用します"
#: terminal/serializers/endpoint.py:58
#: terminal/serializers/endpoint.py:59
msgid ""
"If asset IP addresses under different endpoints conflict, use asset labels"
msgstr ""
@ -7320,13 +7329,13 @@ msgstr "ファイルはJSON形式です。"
msgid "IP address invalid `{}`, {}"
msgstr "IPアドレスが無効: '{}', {}"
#: xpack/plugins/cloud/serializers/account_attrs.py:162
#: xpack/plugins/cloud/serializers/account_attrs.py:172
msgid ""
"Format for comma-delimited string,Such as: 192.168.1.0/24, "
"10.0.0.0-10.0.0.255"
msgstr "形式はコンマ区切りの文字列です192.168.1.0/24,10.0.0.0-10.0.0.255"
#: xpack/plugins/cloud/serializers/account_attrs.py:166
#: xpack/plugins/cloud/serializers/account_attrs.py:176
msgid ""
"The port is used to detect the validity of the IP address. When the "
"synchronization task is executed, only the valid IP address will be "
@ -7336,19 +7345,19 @@ msgstr ""
"実行されると、有効な IP アドレスのみが同期されます。 <br>ポートが0の場合、す"
"べてのIPアドレスが有効です。"
#: xpack/plugins/cloud/serializers/account_attrs.py:174
#: xpack/plugins/cloud/serializers/account_attrs.py:184
msgid "Hostname prefix"
msgstr "ホスト名プレフィックス"
#: xpack/plugins/cloud/serializers/account_attrs.py:177
#: xpack/plugins/cloud/serializers/account_attrs.py:187
msgid "IP segment"
msgstr "IP セグメント"
#: xpack/plugins/cloud/serializers/account_attrs.py:181
#: xpack/plugins/cloud/serializers/account_attrs.py:191
msgid "Test port"
msgstr "テストポート"
#: xpack/plugins/cloud/serializers/account_attrs.py:184
#: xpack/plugins/cloud/serializers/account_attrs.py:194
msgid "Test timeout"
msgstr "テストタイムアウト"
@ -7430,22 +7439,22 @@ msgstr "ライセンスのインポートに成功"
msgid "License is invalid"
msgstr "ライセンスが無効です"
#: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:135
#: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:138
msgid "License"
msgstr "ライセンス"
#: xpack/plugins/license/models.py:79
#: xpack/plugins/license/models.py:80
msgid "Standard edition"
msgstr "標準版"
#: xpack/plugins/license/models.py:81
#: xpack/plugins/license/models.py:82
msgid "Enterprise edition"
msgstr "エンタープライズ版"
#: xpack/plugins/license/models.py:83
#: xpack/plugins/license/models.py:84
msgid "Ultimate edition"
msgstr "究極のエディション"
#: xpack/plugins/license/models.py:85
#: xpack/plugins/license/models.py:86
msgid "Community edition"
msgstr "コミュニティ版"

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9819889a6d8b2934b06c5b242e3f63f404997f30851919247a405f542e8a03bc
size 113244
oid sha256:fffd0032a105eb0c991f4eed7aca4fb344d9e8ab834f7fd2451b164532f198d7
size 113407

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-14 17:34+0800\n"
"POT-Creation-Date: 2023-03-19 23:52+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -168,7 +168,7 @@ msgstr "仅创建"
#: assets/models/cmd_filter.py:36 assets/serializers/domain.py:19
#: assets/serializers/label.py:27 audits/models.py:48
#: authentication/models/connection_token.py:33
#: perms/models/asset_permission.py:64 perms/serializers/permission.py:35
#: perms/models/asset_permission.py:64 perms/serializers/permission.py:34
#: terminal/backends/command/models.py:20 terminal/models/session/session.py:32
#: terminal/notifications.py:95 terminal/serializers/command.py:17
#: tickets/models/ticket/apply_asset.py:16 xpack/plugins/cloud/models.py:212
@ -196,7 +196,7 @@ msgstr "来源"
#: acls/models/base.py:102 acls/serializers/base.py:57
#: assets/serializers/asset/common.py:131 assets/serializers/gateway.py:28
#: audits/models.py:49 ops/models/base.py:18
#: perms/models/asset_permission.py:70 perms/serializers/permission.py:40
#: perms/models/asset_permission.py:70 perms/serializers/permission.py:39
#: terminal/backends/command/models.py:21 terminal/models/session/session.py:34
#: tickets/models/ticket/command_confirm.py:13 xpack/plugins/cloud/models.py:85
msgid "Account"
@ -446,7 +446,7 @@ msgstr "账号验证"
#: assets/models/group.py:20 assets/models/label.py:18
#: assets/models/platform.py:21 assets/models/platform.py:76
#: assets/serializers/asset/common.py:74 assets/serializers/asset/common.py:151
#: assets/serializers/platform.py:133
#: assets/serializers/platform.py:132
#: authentication/serializers/connect_token_secret.py:103 ops/mixin.py:21
#: ops/models/adhoc.py:21 ops/models/celery.py:15 ops/models/celery.py:57
#: ops/models/job.py:91 ops/models/playbook.py:23 ops/serializers/job.py:19
@ -529,7 +529,7 @@ msgstr "已托管密码"
#: accounts/serializers/account/account.py:75 applications/models.py:11
#: assets/models/label.py:21 assets/models/platform.py:77
#: assets/serializers/asset/common.py:127 assets/serializers/cagegory.py:8
#: assets/serializers/platform.py:94 assets/serializers/platform.py:134
#: assets/serializers/platform.py:93 assets/serializers/platform.py:133
#: perms/serializers/user_permission.py:26 settings/models.py:35
#: tickets/models/ticket/apply_application.py:13
msgid "Category"
@ -540,7 +540,7 @@ msgstr "类别"
#: acls/serializers/command_acl.py:18 applications/models.py:14
#: assets/models/_user.py:50 assets/models/automations/base.py:20
#: assets/models/cmd_filter.py:74 assets/models/platform.py:78
#: assets/serializers/asset/common.py:128 assets/serializers/platform.py:93
#: assets/serializers/asset/common.py:128 assets/serializers/platform.py:92
#: audits/serializers.py:48
#: authentication/serializers/connect_token_secret.py:116 ops/models/job.py:102
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:31
@ -558,6 +558,30 @@ msgstr "类型"
msgid "Asset not found"
msgstr "资产不存在"
#: accounts/serializers/account/account.py:144 acls/models/base.py:98
#: acls/models/login_acl.py:13 acls/serializers/base.py:55
#: acls/serializers/login_acl.py:21 assets/models/cmd_filter.py:24
#: assets/models/label.py:16 audits/models.py:44 audits/models.py:63
#: audits/models.py:141 authentication/models/connection_token.py:29
#: authentication/models/sso_token.py:16
#: notifications/models/notification.py:12
#: perms/api/user_permission/mixin.py:55 perms/models/asset_permission.py:58
#: perms/serializers/permission.py:30 rbac/builtin.py:122
#: rbac/models/rolebinding.py:49 terminal/backends/command/models.py:19
#: terminal/models/session/session.py:30 terminal/models/session/sharing.py:32
#: terminal/notifications.py:96 terminal/notifications.py:144
#: terminal/serializers/command.py:16 tickets/models/comment.py:21
#: users/const.py:14 users/models/user.py:911 users/models/user.py:942
#: users/serializers/group.py:18
msgid "User"
msgstr "用户"
#: accounts/serializers/account/account.py:145
#: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:98 terminal/notifications.py:146
msgid "Date"
msgstr "日期"
#: accounts/serializers/account/backup.py:31
#: accounts/serializers/automations/base.py:36
#: assets/serializers/automations/base.py:34 ops/mixin.py:23 ops/mixin.py:103
@ -588,7 +612,7 @@ msgid "Key password"
msgstr "密钥密码"
#: accounts/serializers/account/base.py:81
#: assets/serializers/asset/common.py:301
#: assets/serializers/asset/common.py:303
msgid "Spec info"
msgstr "特殊信息"
@ -729,24 +753,6 @@ msgstr "审批人"
msgid "Active"
msgstr "激活中"
#: acls/models/base.py:98 acls/models/login_acl.py:13
#: acls/serializers/base.py:55 acls/serializers/login_acl.py:21
#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:44
#: audits/models.py:63 audits/models.py:141
#: authentication/models/connection_token.py:29
#: authentication/models/sso_token.py:16
#: notifications/models/notification.py:12
#: perms/api/user_permission/mixin.py:55 perms/models/asset_permission.py:58
#: perms/serializers/permission.py:31 rbac/builtin.py:122
#: rbac/models/rolebinding.py:49 terminal/backends/command/models.py:19
#: terminal/models/session/session.py:30 terminal/models/session/sharing.py:32
#: terminal/notifications.py:96 terminal/notifications.py:144
#: terminal/serializers/command.py:16 tickets/models/comment.py:21
#: users/const.py:14 users/models/user.py:911 users/models/user.py:942
#: users/serializers/group.py:18
msgid "User"
msgstr "用户"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:65 terminal/const.py:67
#: terminal/models/session/session.py:43 terminal/serializers/command.py:18
@ -760,7 +766,7 @@ msgid "Regex"
msgstr "正则表达式"
#: acls/models/command_acl.py:26 assets/models/cmd_filter.py:79
#: settings/serializers/basic.py:10 xpack/plugins/license/models.py:29
#: settings/serializers/basic.py:10 xpack/plugins/license/models.py:30
msgid "Content"
msgstr "内容"
@ -877,7 +883,7 @@ msgstr ""
#: authentication/templates/authentication/_msg_oauth_bind.html:12
#: authentication/templates/authentication/_msg_rest_password_success.html:8
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
#: settings/serializers/terminal.py:10 terminal/serializers/endpoint.py:61
#: settings/serializers/terminal.py:10 terminal/serializers/endpoint.py:62
msgid "IP"
msgstr "IP"
@ -902,7 +908,7 @@ msgstr "应用程序"
msgid "Can match application"
msgstr "匹配应用"
#: assets/api/asset/asset.py:143
#: assets/api/asset/asset.py:147
msgid "Cannot create asset directly, you should create a host or other"
msgstr "不能直接创建资产, 你应该创建主机或其他资产"
@ -1052,7 +1058,7 @@ msgid "Basic"
msgstr "基本"
#: assets/const/web.py:61 assets/models/asset/web.py:13
#: assets/serializers/asset/common.py:123 assets/serializers/platform.py:40
#: assets/serializers/asset/common.py:123 assets/serializers/platform.py:39
msgid "Script"
msgstr "脚本"
@ -1188,7 +1194,7 @@ msgstr "地址"
#: assets/models/asset/common.py:104 assets/models/platform.py:112
#: authentication/serializers/connect_token_secret.py:108
#: perms/serializers/user_permission.py:24
#: xpack/plugins/cloud/serializers/account_attrs.py:187
#: xpack/plugins/cloud/serializers/account_attrs.py:197
msgid "Platform"
msgstr "系统平台"
@ -1202,6 +1208,10 @@ msgstr "网域"
msgid "Labels"
msgstr "标签管理"
#: assets/models/asset/common.py:111 assets/serializers/asset/host.py:27
msgid "Info"
msgstr "信息"
#: assets/models/asset/common.py:283
msgid "Can refresh asset hardware info"
msgstr "可以更新资产硬件信息"
@ -1239,27 +1249,27 @@ msgstr "客户端密钥"
msgid "Allow invalid cert"
msgstr "忽略证书校验"
#: assets/models/asset/web.py:9 assets/serializers/platform.py:30
#: assets/models/asset/web.py:9 assets/serializers/platform.py:29
msgid "Autofill"
msgstr "自动代填"
#: assets/models/asset/web.py:10 assets/serializers/asset/common.py:120
#: assets/serializers/platform.py:32
#: assets/serializers/platform.py:31
msgid "Username selector"
msgstr "用户名选择器"
#: assets/models/asset/web.py:11 assets/serializers/asset/common.py:121
#: assets/serializers/platform.py:35
#: assets/serializers/platform.py:34
msgid "Password selector"
msgstr "密码选择器"
#: assets/models/asset/web.py:12 assets/serializers/asset/common.py:122
#: assets/serializers/platform.py:38
#: assets/serializers/platform.py:37
msgid "Submit selector"
msgstr "确认按钮选择器"
#: assets/models/automations/base.py:17 assets/models/cmd_filter.py:38
#: assets/serializers/asset/common.py:300 rbac/tree.py:35
#: assets/serializers/asset/common.py:302 rbac/tree.py:35
msgid "Accounts"
msgstr "账号管理"
@ -1299,7 +1309,7 @@ msgid "Date verified"
msgstr "校验日期"
#: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:61
#: perms/serializers/permission.py:33 users/models/group.py:25
#: perms/serializers/permission.py:32 users/models/group.py:25
#: users/models/user.py:723
msgid "User group"
msgstr "用户组"
@ -1388,7 +1398,7 @@ msgstr "全称"
msgid "Parent key"
msgstr "ssh私钥"
#: assets/models/node.py:558 perms/serializers/permission.py:36
#: assets/models/node.py:558 perms/serializers/permission.py:35
#: tickets/models/ticket/apply_asset.py:14 xpack/plugins/cloud/models.py:96
msgid "Node"
msgstr "节点"
@ -1415,45 +1425,45 @@ msgstr "启用"
msgid "Ansible config"
msgstr "Ansible 配置"
#: assets/models/platform.py:44 assets/serializers/platform.py:61
#: assets/models/platform.py:44 assets/serializers/platform.py:60
msgid "Ping enabled"
msgstr "启用资产探活"
#: assets/models/platform.py:45 assets/serializers/platform.py:62
#: assets/models/platform.py:45 assets/serializers/platform.py:61
msgid "Ping method"
msgstr "资产探活方式"
#: assets/models/platform.py:46 assets/models/platform.py:59
#: assets/serializers/platform.py:63
#: assets/serializers/platform.py:62
msgid "Gather facts enabled"
msgstr "启用收集资产信息"
#: assets/models/platform.py:47 assets/models/platform.py:61
#: assets/serializers/platform.py:64
#: assets/serializers/platform.py:63
msgid "Gather facts method"
msgstr "收集信息方式"
#: assets/models/platform.py:48 assets/serializers/platform.py:67
#: assets/models/platform.py:48 assets/serializers/platform.py:66
msgid "Change secret enabled"
msgstr "启用改密"
#: assets/models/platform.py:50 assets/serializers/platform.py:68
#: assets/models/platform.py:50 assets/serializers/platform.py:67
msgid "Change secret method"
msgstr "改密方式"
#: assets/models/platform.py:52 assets/serializers/platform.py:69
#: assets/models/platform.py:52 assets/serializers/platform.py:68
msgid "Push account enabled"
msgstr "启用账号推送"
#: assets/models/platform.py:54 assets/serializers/platform.py:70
#: assets/models/platform.py:54 assets/serializers/platform.py:69
msgid "Push account method"
msgstr "账号推送方式"
#: assets/models/platform.py:56 assets/serializers/platform.py:65
#: assets/models/platform.py:56 assets/serializers/platform.py:64
msgid "Verify account enabled"
msgstr "开启账号验证"
#: assets/models/platform.py:58 assets/serializers/platform.py:66
#: assets/models/platform.py:58 assets/serializers/platform.py:65
msgid "Verify account method"
msgstr "账号验证方式"
@ -1465,23 +1475,23 @@ msgstr "元数据"
msgid "Internal"
msgstr "内置"
#: assets/models/platform.py:83 assets/serializers/platform.py:91
#: assets/models/platform.py:83 assets/serializers/platform.py:90
msgid "Charset"
msgstr "编码"
#: assets/models/platform.py:85 assets/serializers/platform.py:119
#: assets/models/platform.py:85 assets/serializers/platform.py:118
msgid "Domain enabled"
msgstr "启用网域"
#: assets/models/platform.py:87 assets/serializers/platform.py:118
#: assets/models/platform.py:87 assets/serializers/platform.py:117
msgid "Su enabled"
msgstr "启用账号切换"
#: assets/models/platform.py:88 assets/serializers/platform.py:101
#: assets/models/platform.py:88 assets/serializers/platform.py:100
msgid "Su method"
msgstr "账号切换方式"
#: assets/models/platform.py:90 assets/serializers/platform.py:98
#: assets/models/platform.py:90 assets/serializers/platform.py:97
msgid "Automation"
msgstr "自动化"
@ -1490,11 +1500,17 @@ msgstr "自动化"
msgid "%(value)s is not an even number"
msgstr "%(value)s is not an even number"
#: assets/notifications.py:12
msgid ""
"Batch update platform in assets, skipping assets that do not meet platform "
"type"
msgstr "资产中批量更新平台,不符合平台类型跳过的资产"
#: assets/serializers/asset/common.py:119
msgid "Auto fill"
msgstr "自动代填"
#: assets/serializers/asset/common.py:130 assets/serializers/platform.py:96
#: assets/serializers/asset/common.py:130 assets/serializers/platform.py:95
#: authentication/serializers/connect_token_secret.py:28
#: authentication/serializers/connect_token_secret.py:66
#: perms/serializers/user_permission.py:25 xpack/plugins/cloud/models.py:99
@ -1507,19 +1523,19 @@ msgid "Node path"
msgstr "节点路径"
#: assets/serializers/asset/common.py:150
#: assets/serializers/asset/common.py:302
#: assets/serializers/asset/common.py:304
msgid "Auto info"
msgstr "自动化信息"
#: assets/serializers/asset/common.py:226
#: assets/serializers/asset/common.py:228
msgid "Platform not exist"
msgstr "平台不存在"
#: assets/serializers/asset/common.py:261
#: assets/serializers/asset/common.py:263
msgid "port out of range (1-65535)"
msgstr "端口超出范围 (1-65535)"
#: assets/serializers/asset/common.py:268
#: assets/serializers/asset/common.py:270
msgid "Protocol is required: {}"
msgstr "协议是必填的: {}"
@ -1580,10 +1596,6 @@ msgstr "系统版本"
msgid "OS arch"
msgstr "系统架构"
#: assets/serializers/asset/host.py:27
msgid "Info"
msgstr "信息"
#: assets/serializers/cagegory.py:9
msgid "Constraints"
msgstr "约束"
@ -1612,31 +1624,31 @@ msgstr "不能包含: /"
msgid "The same level node name cannot be the same"
msgstr "同级别节点名字不能重复"
#: assets/serializers/platform.py:26
#: assets/serializers/platform.py:25
msgid "SFTP enabled"
msgstr "SFTP 已启用"
#: assets/serializers/platform.py:27
#: assets/serializers/platform.py:26
msgid "SFTP home"
msgstr "SFTP 根路径"
#: assets/serializers/platform.py:43
#: assets/serializers/platform.py:42
msgid "Auth with username"
msgstr "使用用户名认证"
#: assets/serializers/platform.py:71
#: assets/serializers/platform.py:70
msgid "Gather accounts enabled"
msgstr "启用账号收集"
#: assets/serializers/platform.py:72
#: assets/serializers/platform.py:71
msgid "Gather accounts method"
msgstr "收集账号方式"
#: assets/serializers/platform.py:78
#: assets/serializers/platform.py:77
msgid "Primary"
msgstr "主要的"
#: assets/serializers/platform.py:120
#: assets/serializers/platform.py:119
msgid "Default Domain"
msgstr "默认网域"
@ -2472,15 +2484,15 @@ msgid "Ticket info"
msgstr "工单信息"
#: authentication/serializers/connection_token.py:20
#: perms/models/asset_permission.py:71 perms/serializers/permission.py:37
#: perms/serializers/permission.py:70
#: perms/models/asset_permission.py:71 perms/serializers/permission.py:36
#: perms/serializers/permission.py:69
#: tickets/models/ticket/apply_application.py:28
#: tickets/models/ticket/apply_asset.py:18
msgid "Actions"
msgstr "动作"
#: authentication/serializers/connection_token.py:41
#: perms/serializers/permission.py:39 perms/serializers/permission.py:71
#: perms/serializers/permission.py:38 perms/serializers/permission.py:70
#: users/serializers/user.py:93 users/serializers/user.py:165
msgid "Is expired"
msgstr "已过期"
@ -2500,8 +2512,8 @@ msgstr "邮箱"
msgid "The {} cannot be empty"
msgstr "{} 不能为空"
#: authentication/serializers/token.py:79 perms/serializers/permission.py:38
#: perms/serializers/permission.py:72 users/serializers/user.py:94
#: authentication/serializers/token.py:79 perms/serializers/permission.py:37
#: perms/serializers/permission.py:71 users/serializers/user.py:94
#: users/serializers/user.py:163
msgid "Is valid"
msgstr "是否有效"
@ -2522,11 +2534,6 @@ msgstr "使用api key签名请求头每个请求的头部是不一样的"
msgid "docs"
msgstr "文档"
#: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:98 terminal/notifications.py:146
msgid "Date"
msgstr "日期"
#: authentication/templates/authentication/_access_key_modal.html:48
msgid "Show"
msgstr "显示"
@ -2961,7 +2968,7 @@ msgstr "组织 ID"
msgid "The file content overflowed (The maximum length `{}` bytes)"
msgstr "文件内容太大 (最大长度 `{}` 字节)"
#: common/drf/parsers/base.py:189
#: common/drf/parsers/base.py:193
msgid "Parse file error: {}"
msgstr "解析文件错误: {}"
@ -3207,11 +3214,11 @@ msgstr "发布站内消息"
msgid "No account available"
msgstr "无可用账号"
#: ops/ansible/inventory.py:189
#: ops/ansible/inventory.py:196
msgid "Ansible disabled"
msgstr "Ansible 已禁用"
#: ops/ansible/inventory.py:205
#: ops/ansible/inventory.py:212
msgid "Skip hosts below:"
msgstr "跳过以下主机: "
@ -4404,7 +4411,7 @@ msgid "SSO auth key TTL"
msgstr "令牌有效期"
#: settings/serializers/auth/sso.py:17
#: xpack/plugins/cloud/serializers/account_attrs.py:184
#: xpack/plugins/cloud/serializers/account_attrs.py:194
msgid "Unit: second"
msgstr "单位: 秒"
@ -5475,7 +5482,7 @@ msgid "Redis port"
msgstr "Redis 端口"
#: terminal/models/component/endpoint.py:29
#: terminal/models/component/endpoint.py:98 terminal/serializers/endpoint.py:64
#: terminal/models/component/endpoint.py:98 terminal/serializers/endpoint.py:66
#: terminal/serializers/storage.py:38 terminal/serializers/storage.py:50
#: terminal/serializers/storage.py:80 terminal/serializers/storage.py:90
#: terminal/serializers/storage.py:98
@ -5737,15 +5744,15 @@ msgstr "账号"
msgid "Timestamp"
msgstr "时间戳"
#: terminal/serializers/endpoint.py:14
#: terminal/serializers/endpoint.py:15
msgid "Oracle port"
msgstr "Oracle 端口"
#: terminal/serializers/endpoint.py:17
#: terminal/serializers/endpoint.py:18
msgid "Oracle port range"
msgstr "Oracle 端口范围"
#: terminal/serializers/endpoint.py:19
#: terminal/serializers/endpoint.py:20
msgid ""
"Oracle proxy server listen port is dynamic, Each additional Oracle database "
"instance adds a port listener"
@ -5753,11 +5760,11 @@ msgstr ""
"Oracle 代理服务器监听端口是动态的,每增加一个 Oracle 数据库实例,就会增加一个"
"端口监听"
#: terminal/serializers/endpoint.py:35
#: terminal/serializers/endpoint.py:36
msgid "Visit IP/Host, if empty, use the current request instead"
msgstr "访问IP/Host如果为空则使用当前请求的地址代替"
#: terminal/serializers/endpoint.py:58
#: terminal/serializers/endpoint.py:59
msgid ""
"If asset IP addresses under different endpoints conflict, use asset labels"
msgstr "如果不同端点下的资产 IP 有冲突,使用资产标签实现"
@ -7224,13 +7231,13 @@ msgstr "JSON 格式的文件"
msgid "IP address invalid `{}`, {}"
msgstr "IP 地址无效: `{}`, {}"
#: xpack/plugins/cloud/serializers/account_attrs.py:162
#: xpack/plugins/cloud/serializers/account_attrs.py:172
msgid ""
"Format for comma-delimited string,Such as: 192.168.1.0/24, "
"10.0.0.0-10.0.0.255"
msgstr "格式为逗号分隔的字符串192.168.1.0/24,10.0.0.0-10.0.0.255"
#: xpack/plugins/cloud/serializers/account_attrs.py:166
#: xpack/plugins/cloud/serializers/account_attrs.py:176
msgid ""
"The port is used to detect the validity of the IP address. When the "
"synchronization task is executed, only the valid IP address will be "
@ -7239,19 +7246,19 @@ msgstr ""
"端口用来检测 IP 地址的有效性,在同步任务执行时,只会同步有效的 IP 地址。 <br>"
"如果端口为 0则表示所有 IP 地址均有效。"
#: xpack/plugins/cloud/serializers/account_attrs.py:174
#: xpack/plugins/cloud/serializers/account_attrs.py:184
msgid "Hostname prefix"
msgstr "主机名前缀"
#: xpack/plugins/cloud/serializers/account_attrs.py:177
#: xpack/plugins/cloud/serializers/account_attrs.py:187
msgid "IP segment"
msgstr "IP 网段"
#: xpack/plugins/cloud/serializers/account_attrs.py:181
#: xpack/plugins/cloud/serializers/account_attrs.py:191
msgid "Test port"
msgstr "测试端口"
#: xpack/plugins/cloud/serializers/account_attrs.py:184
#: xpack/plugins/cloud/serializers/account_attrs.py:194
msgid "Test timeout"
msgstr "测试超时时间"
@ -7331,23 +7338,23 @@ msgstr "许可证导入成功"
msgid "License is invalid"
msgstr "无效的许可证"
#: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:135
#: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:138
msgid "License"
msgstr "许可证"
#: xpack/plugins/license/models.py:79
#: xpack/plugins/license/models.py:80
msgid "Standard edition"
msgstr "标准版"
#: xpack/plugins/license/models.py:81
#: xpack/plugins/license/models.py:82
msgid "Enterprise edition"
msgstr "企业版"
#: xpack/plugins/license/models.py:83
#: xpack/plugins/license/models.py:84
msgid "Ultimate edition"
msgstr "旗舰版"
#: xpack/plugins/license/models.py:85
#: xpack/plugins/license/models.py:86
msgid "Community edition"
msgstr "社区版"

Loading…
Cancel
Save