From d9b6a4ad8f65892bddd0c8b8ad8cc629befa3241 Mon Sep 17 00:00:00 2001 From: shabbywu Date: Wed, 16 Aug 2023 10:57:02 +0800 Subject: [PATCH 01/16] =?UTF-8?q?bugfix:=20=E4=BF=AE=E5=A4=8D=E6=9C=AA?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=20s-mart=20=E5=BA=94=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=96=B9=E5=BC=8F=20(#629)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiserver/paasng/paasng/engine/deploy/engine_svc.py | 10 ++++++++-- apiserver/paasng/paasng/engine/deploy/image_release.py | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/apiserver/paasng/paasng/engine/deploy/engine_svc.py b/apiserver/paasng/paasng/engine/deploy/engine_svc.py index 9a3ffdcbd7..f51d23323d 100644 --- a/apiserver/paasng/paasng/engine/deploy/engine_svc.py +++ b/apiserver/paasng/paasng/engine/deploy/engine_svc.py @@ -71,14 +71,20 @@ def wl_app(self) -> WlApp: """ return self.engine_app.to_wl_obj() - def create_build(self, image: str, extra_envs: Dict[str, str], procfile: Dict[str, str]) -> str: + def create_build( + self, + image: str, + extra_envs: Dict[str, str], + procfile: Dict[str, str], + artifact_type: ArtifactType = ArtifactType.NONE, + ) -> str: """Create the **fake** build for Image Type App""" build = Build.objects.create( app=self.wl_app, env_variables=extra_envs, procfile=procfile, image=image, - artifact_type=ArtifactType.NONE, + artifact_type=artifact_type, ) return str(build.uuid) diff --git a/apiserver/paasng/paasng/engine/deploy/image_release.py b/apiserver/paasng/paasng/engine/deploy/image_release.py index 5f50e45ad4..ea04449260 100644 --- a/apiserver/paasng/paasng/engine/deploy/image_release.py +++ b/apiserver/paasng/paasng/engine/deploy/image_release.py @@ -24,6 +24,7 @@ from paas_wl.cnative.specs.credentials import get_references, validate_references from paas_wl.cnative.specs.exceptions import InvalidImageCredentials from paas_wl.cnative.specs.models import AppModelRevision +from paas_wl.platform.applications.constants import ArtifactType from paas_wl.workloads.images.models import AppImageCredential from paasng.dev_resources.servicehub.manager import mixed_service_mgr from paasng.engine.configurations.image import ImageCredentialManager, RuntimeImageInfo @@ -38,6 +39,7 @@ from paasng.extensions.declarative.exceptions import ControllerError, DescriptionValidationError from paasng.extensions.declarative.handlers import AppDescriptionHandler from paasng.platform.applications.constants import ApplicationType +from paasng.platform.modules.constants import SourceOrigin from paasng.utils.i18n.celery import I18nTask logger = logging.getLogger(__name__) @@ -77,6 +79,10 @@ def start(self): image=runtime_info.generate_image(self.version_info), procfile={p.name: p.command for p in processes.values()}, extra_envs={"BKPAAS_IMAGE_APPLICATION_FLAG": "1"}, + # 需要兼容 s-mart 应用 + artifact_type=ArtifactType.SLUG + if self.module_environment.module.get_source_origin() == SourceOrigin.S_MART + else ArtifactType.NONE, ) else: # TODO: 提供更好的处理方式, 不应该依赖上一个 Deployment From ce8a738811d65e198bf910ee448bb145a74c3090 Mon Sep 17 00:00:00 2001 From: shabbywu Date: Thu, 17 Aug 2023 10:42:02 +0800 Subject: [PATCH 02/16] =?UTF-8?q?bugfix:=20=E4=BF=AE=E5=A4=8D=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E6=95=B0=E4=B8=BA0=E6=97=B6=E4=BC=9A=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E8=BF=9B=E7=A8=8B=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20(#631)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiserver/paasng/paas_wl/workloads/processes/controllers.py | 3 --- .../tests/paas_wl/workloads/processes/test_controllers.py | 5 +++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/apiserver/paasng/paas_wl/workloads/processes/controllers.py b/apiserver/paasng/paas_wl/workloads/processes/controllers.py index 5f44f11d8a..33795a393d 100644 --- a/apiserver/paasng/paas_wl/workloads/processes/controllers.py +++ b/apiserver/paasng/paas_wl/workloads/processes/controllers.py @@ -336,9 +336,6 @@ def list_processes(env: ModuleEnvironment) -> ProcessesInfo: continue process.instances = [inst for inst in insts_in_k8s.items if inst.process_type == process.type] - if len(process.instances) == 0: - logger.debug("Process %s have no instances", process.type) - continue processes.append(process) if missing := procfile.keys() - {process.type for process in processes}: diff --git a/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py b/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py index 02bcee5019..a0204f09d1 100644 --- a/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py +++ b/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py @@ -93,7 +93,7 @@ def test_list_processes(bk_stag_env, wl_app, wl_release, mock_reader): def test_list_processes_boundary_case(bk_stag_env, wl_app, wl_release, mock_reader): mock_reader.set_processes( - # worker 没有实例, 也会被忽略 + # worker 没有实例, 不会被忽略 # beat 未定义在 Procfile, 会被忽略 [ make_process(wl_app, "web"), @@ -105,7 +105,8 @@ def test_list_processes_boundary_case(bk_stag_env, wl_app, wl_release, mock_read web_proc = make_process(wl_app, "web") web_proc.instances = [Instance(process_type='web', app=wl_app, name='web')] - assert list_processes(bk_stag_env).processes == [web_proc] + worker_proc = make_process(wl_app, "worker") + assert list_processes(bk_stag_env).processes == [web_proc, worker_proc] def test_list_processes_without_release(bk_stag_env, wl_app, wl_release, mock_reader): From e036f3ed18020f997703455960496077c424cc5d Mon Sep 17 00:00:00 2001 From: shabbywu Date: Thu, 17 Aug 2023 11:45:08 +0800 Subject: [PATCH 03/16] =?UTF-8?q?enhance:=20=E5=85=81=E8=AE=B8=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E6=9C=AA=E5=AE=9A=E4=B9=89=E5=9C=A8=20Procfile=20?= =?UTF-8?q?=E7=9A=84=E8=BF=9B=E7=A8=8B=20(#633)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paas_wl/workloads/processes/controllers.py | 4 ---- .../workloads/processes/test_controllers.py | 16 ++++++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apiserver/paasng/paas_wl/workloads/processes/controllers.py b/apiserver/paasng/paas_wl/workloads/processes/controllers.py index 33795a393d..d4a4f19730 100644 --- a/apiserver/paasng/paas_wl/workloads/processes/controllers.py +++ b/apiserver/paasng/paas_wl/workloads/processes/controllers.py @@ -331,10 +331,6 @@ def list_processes(env: ModuleEnvironment) -> ProcessesInfo: procs_in_k8s = process_kmodel.list_by_app_with_meta(wl_app) insts_in_k8s = instance_kmodel.list_by_app_with_meta(wl_app) for process in procs_in_k8s.items: - if process.type not in procfile: - logger.warning("Process %s is undefined in procfile", process.type) - continue - process.instances = [inst for inst in insts_in_k8s.items if inst.process_type == process.type] processes.append(process) diff --git a/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py b/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py index a0204f09d1..be5aeed8f5 100644 --- a/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py +++ b/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py @@ -94,27 +94,31 @@ def test_list_processes(bk_stag_env, wl_app, wl_release, mock_reader): def test_list_processes_boundary_case(bk_stag_env, wl_app, wl_release, mock_reader): mock_reader.set_processes( # worker 没有实例, 不会被忽略 - # beat 未定义在 Procfile, 会被忽略 + # beat 未定义在 Procfile, 不会被忽略 [ make_process(wl_app, "web"), make_process(wl_app, "worker"), make_process(wl_app, "beat"), ] ) - mock_reader.set_instances([Instance(app=wl_app, name="web", process_type="web")]) + mock_reader.set_instances( + [Instance(app=wl_app, name="web", process_type="web"), Instance(app=wl_app, name="beat", process_type="beat")] + ) web_proc = make_process(wl_app, "web") - web_proc.instances = [Instance(process_type='web', app=wl_app, name='web')] + web_proc.instances = [Instance(app=wl_app, name="web", process_type="web")] worker_proc = make_process(wl_app, "worker") - assert list_processes(bk_stag_env).processes == [web_proc, worker_proc] + beat_proc = make_process(wl_app, "beat") + beat_proc.instances = [Instance(app=wl_app, name="beat", process_type="beat")] + assert list_processes(bk_stag_env).processes == [web_proc, worker_proc, beat_proc] def test_list_processes_without_release(bk_stag_env, wl_app, wl_release, mock_reader): - """没有发布过的 WlApp,无法获取进程信息""" + """没有发布过的 WlApp,也能获取进程信息""" mock_reader.set_processes([make_process(wl_app, "web")]) mock_reader.set_instances([Instance(app=wl_app, name="web", process_type="web")]) wl_release.delete() - assert len(list_processes(bk_stag_env).processes) == 0 + assert len(list_processes(bk_stag_env).processes) == 1 class TestController: From 1dda10dcfb596177e278df396f81b5369f8f5cdc Mon Sep 17 00:00:00 2001 From: tiga <68499559+SheepSheepChen@users.noreply.github.com> Date: Thu, 17 Aug 2023 17:29:06 +0800 Subject: [PATCH 04/16] Fix:update blue-krill version (#634) (#635) --- apiserver/paasng/conf.yaml.tpl | 4 ++-- .../paasng/paasng/engine/configurations/config_var.py | 1 + apiserver/paasng/paasng/settings/__init__.py | 5 +++-- apiserver/poetry.lock | 8 ++++---- apiserver/pyproject.toml | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/apiserver/paasng/conf.yaml.tpl b/apiserver/paasng/conf.yaml.tpl index 3feae5d36f..d5e80b84b0 100644 --- a/apiserver/paasng/conf.yaml.tpl +++ b/apiserver/paasng/conf.yaml.tpl @@ -3,8 +3,8 @@ ## 用于加密数据库内容的 Secret # BKKRILL_ENCRYPT_SECRET_KEY: '' -## 选择加密数据库内容的算法,可选择:'FernetCipher' , 'SM4CTR' -# ENCRYPT_CIPHER_TYPE : '' +## 选择加密数据库内容的算法,可选择:'SHANGMI' , 'CLASSIC',分别对应 'SM4CTR'和'Fernet' 算法 +# BK_CRYPTO_TYPE : '' ## (Django)特定 Django 安装的密钥。用于提供 加密签名,默认值为:${BKKRILL_ENCRYPT_SECRET_KEY} ## 更多参考:https://docs.djangoproject.com/zh-hans/3.2/ref/settings/#secret-key diff --git a/apiserver/paasng/paasng/engine/configurations/config_var.py b/apiserver/paasng/paasng/engine/configurations/config_var.py index d8ddb9c262..b9a58425d4 100644 --- a/apiserver/paasng/paasng/engine/configurations/config_var.py +++ b/apiserver/paasng/paasng/engine/configurations/config_var.py @@ -160,6 +160,7 @@ def generate_env_vars_for_bk_platform(config_vars_prefix: str) -> Dict[str, str] """Generate the platform address in the bk system""" system_envs = { + 'BK_CRYPTO_TYPE': settings.BK_CRYPTO_TYPE, 'BK_DOMAIN': settings.BK_DOMAIN, 'URL': settings.BKPAAS_URL, # 蓝鲸桌面地址 diff --git a/apiserver/paasng/paasng/settings/__init__.py b/apiserver/paasng/paasng/settings/__init__.py index 32a6bf408d..900f81768c 100644 --- a/apiserver/paasng/paasng/settings/__init__.py +++ b/apiserver/paasng/paasng/settings/__init__.py @@ -89,8 +89,9 @@ # Django 项目使用的 SECRET_KEY,如未配置,使用 BKKRILL 的 secret key 替代 SECRET_KEY = settings.get("SECRET_KEY") or force_str(BKKRILL_ENCRYPT_SECRET_KEY) -# 选择加密数据库内容的算法,可选择:'FernetCipher' , 'SM4CTR' -ENCRYPT_CIPHER_TYPE = settings.get('ENCRYPT_CIPHER_TYPE', 'FernetCipher') +# 选择加密数据库内容的算法,可选择:'SHANGMI' , 'CLASSIC' +BK_CRYPTO_TYPE = settings.get('BK_CRYPTO_TYPE', 'CLASSIC') +ENCRYPT_CIPHER_TYPE = 'SM4CTR' if BK_CRYPTO_TYPE == 'SHANGMI' else 'FernetCipher' DEBUG = settings.get('DEBUG', False) diff --git a/apiserver/poetry.lock b/apiserver/poetry.lock index 298ee2cf18..b1bcd5b5c2 100644 --- a/apiserver/poetry.lock +++ b/apiserver/poetry.lock @@ -490,14 +490,14 @@ reference = "tencent-mirror" [[package]] name = "blue-krill" -version = "2.0.1" +version = "2.0.2" description = "Tools and common packages for blueking paas" category = "main" optional = false python-versions = ">=3.8,<3.11" files = [ - {file = "blue_krill-2.0.1-py3-none-any.whl", hash = "sha256:a05e8dee4f7a479a4ece1f5f219dae4cd0db429ee2f2fbcbd95f5b308ed5cf5d"}, - {file = "blue_krill-2.0.1.tar.gz", hash = "sha256:015a4abebee9f0e622e07b44234d4e8a28f6d0badda1f61c4ea6f6be9a47e914"}, + {file = "blue_krill-2.0.2-py3-none-any.whl", hash = "sha256:69ad05f8bc2bcf13a24f09860235ccec3fd952547dae3bcaa5974f38a9be0161"}, + {file = "blue_krill-2.0.2.tar.gz", hash = "sha256:e8c512a0c70ca9add03f668832015cd77169145ec80475ad926ee2ae952adfa8"}, ] [package.dependencies] @@ -5321,4 +5321,4 @@ reference = "tencent-mirror" [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<3.11" -content-hash = "5027ba8c610a24a4d0cabee65cade5095d1031de2158d72b71376506e097ba63" +content-hash = "1b410ad082f46f42d1f9806bb9a7c606ac80a0ffa89bee6dc3feb636ffc5bb35" diff --git a/apiserver/pyproject.toml b/apiserver/pyproject.toml index 717f638eeb..2e562463e5 100644 --- a/apiserver/pyproject.toml +++ b/apiserver/pyproject.toml @@ -16,7 +16,7 @@ bkpaas-auth = "==2.0.6" apigw-manager = {version = ">=1.0.14"} bkstorages = {version = "==1.0.8"} bleach = "==2.0.0" -blue-krill = {version = "==2.0.1"} +blue-krill = {version = "==2.0.2"} bkapi-component-open = {version = ">=1.0.0"} boto = "==2.43.0" boto3 = "<1.15.0" From 872d27203a8bb1444b21b7d21d6cfdfc0869b383 Mon Sep 17 00:00:00 2001 From: wmh <3303710797@qq.com> Date: Fri, 25 Aug 2023 16:50:11 +0800 Subject: [PATCH 05/16] Fix bug 1.2 (#647) --- .../engine/entry-config/comps/visit-config.vue | 1 + .../dev-center/app/market/market-info.vue | 6 +++++- .../dev-center/app/market/market-manager.vue | 1 + .../app/summary/default-overview.vue | 18 ++++++++++++------ .../views/dev-center/app/summary/overview.scss | 4 ++++ 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/webfe/package_vue/src/views/dev-center/app/engine/entry-config/comps/visit-config.vue b/webfe/package_vue/src/views/dev-center/app/engine/entry-config/comps/visit-config.vue index ea48231706..e209c26b6c 100644 --- a/webfe/package_vue/src/views/dev-center/app/engine/entry-config/comps/visit-config.vue +++ b/webfe/package_vue/src/views/dev-center/app/engine/entry-config/comps/visit-config.vue @@ -611,6 +611,7 @@ export default { e.envs[envType][envIndex].isEdit = false; // 改变本条数据的状态 e.envs[envType][envIndex].is_running = true; // 能保存和编辑这代表已经部署过了 e.envs[envType][envIndex].address.url = `http://${curUrlParams.domain_name}${curUrlParams.path_prefix}`; // 拼接地址和路径 + e.envs[envType][envIndex].address.id = this.curDataId; // 成功添加,将响应id保存 } return e; }); diff --git a/webfe/package_vue/src/views/dev-center/app/market/market-info.vue b/webfe/package_vue/src/views/dev-center/app/market/market-info.vue index ad5351855a..0707035380 100644 --- a/webfe/package_vue/src/views/dev-center/app/market/market-info.vue +++ b/webfe/package_vue/src/views/dev-center/app/market/market-info.vue @@ -105,9 +105,10 @@ class="address-info-btn" theme="primary" text + :disabled="fillInfo || deployInfo" @click="handlerAddress" > - {{ isEditAddress ? $t( '确定') : $t( '编辑') }} + {{ isEditAddress ? $t('确定') : $t('编辑') }} diff --git a/webfe/package_vue/src/views/dev-center/app/market/market-manager.vue b/webfe/package_vue/src/views/dev-center/app/market/market-manager.vue index 11d6b389a3..ba63c92119 100644 --- a/webfe/package_vue/src/views/dev-center/app/market/market-manager.vue +++ b/webfe/package_vue/src/views/dev-center/app/market/market-manager.vue @@ -107,6 +107,7 @@ v-else v-model="baseInfo.introduction" type="text" + :show-word-limit="true" :maxlength="100" /> diff --git a/webfe/package_vue/src/views/dev-center/app/summary/default-overview.vue b/webfe/package_vue/src/views/dev-center/app/summary/default-overview.vue index 0e6a48a4ee..4b37ca2711 100644 --- a/webfe/package_vue/src/views/dev-center/app/summary/default-overview.vue +++ b/webfe/package_vue/src/views/dev-center/app/summary/default-overview.vue @@ -163,7 +163,7 @@ { - this.showInstanceChart(this.activeModuleId); - this.showProcessResource(); - this.getAlarmData(); + // 模块 + this.userFeature.ANALYTICS && this.showInstanceChart(this.activeModuleId); + // 资源用量 + this.isResourceMetrics && this.showProcessResource(); + this.userFeature.PHALANX && this.getAlarmData(); + this.init(); }); } }, @@ -928,7 +934,7 @@ export default { setTimeout(() => { this.loading = false; // 云原生应用不需要对应图表数据 - this.getPrcessData(); + this.isResourceMetrics && this.getPrcessData(); }, 300); } }, @@ -951,7 +957,7 @@ export default { uv: true, }; // 是否有模块 - if (data.length) { + if (data.length && this.userFeature.ANALYTICS) { this.$nextTick(() => { this.showInstanceChart(this.activeModuleId); }); diff --git a/webfe/package_vue/src/views/dev-center/app/summary/overview.scss b/webfe/package_vue/src/views/dev-center/app/summary/overview.scss index a08b70c974..e2ce4d14b5 100644 --- a/webfe/package_vue/src/views/dev-center/app/summary/overview.scss +++ b/webfe/package_vue/src/views/dev-center/app/summary/overview.scss @@ -233,6 +233,10 @@ } } +.paas-module-item .resource-charts { + width: 100%; +} + .paasng-cog, .paasng-down-shape, .paasng-up-shape { From e586a86bf78052b22e269ea6c48676aaa3de4e30 Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Tue, 9 Jul 2024 11:31:31 +0800 Subject: [PATCH 06/16] feat: add descriptions for Built-in environment variables --- apiserver/paasng/conf.yaml.tpl | 4 +- .../publish/entrance/preallocated.py | 4 +- apiserver/paasng/paasng/core/region/app.py | 8 +- .../engine/configurations/config_var.py | 114 ++++++++++++------ .../paasng/platform/engine/constants.py | 4 + .../platform/engine/models/config_var.py | 4 +- .../platform/mgrlegacy/app_migrations/envs.py | 4 +- apiserver/paasng/paasng/settings/__init__.py | 26 ++-- .../engine/configurations/test_config_var.py | 2 +- 9 files changed, 112 insertions(+), 58 deletions(-) diff --git a/apiserver/paasng/conf.yaml.tpl b/apiserver/paasng/conf.yaml.tpl index 068b6b8de3..dc880dd8c8 100644 --- a/apiserver/paasng/conf.yaml.tpl +++ b/apiserver/paasng/conf.yaml.tpl @@ -308,8 +308,8 @@ # BK_TURBO_URL: '' ## 蓝盾流水线服务地址 # BK_PIPELINE_URL: '' -## 其他蓝鲸服务地址,格式如:{"BK_SOPS_URL": "http://localhost:8080"} -# BK_PLATFORM_URLS: {} +## PaaS2.0 注入的系统环境变量,格式如:{"BK_SOPS_URL": "http://localhost:8080"} +# BK_PAAS2_PLATFORM_ENVS: {} ## 应用移动端访问地址,用于渲染模板与内置环境变量的配置项 # BKPAAS_WEIXIN_URL_MAP: diff --git a/apiserver/paasng/paasng/accessories/publish/entrance/preallocated.py b/apiserver/paasng/paasng/accessories/publish/entrance/preallocated.py index 515c221b4e..6e1cc8c10d 100644 --- a/apiserver/paasng/paasng/accessories/publish/entrance/preallocated.py +++ b/apiserver/paasng/paasng/accessories/publish/entrance/preallocated.py @@ -28,7 +28,7 @@ from paasng.accessories.publish.entrance.subpaths import get_preallocated_path, get_preallocated_paths_by_env from paasng.platform.applications.models import Application, ModuleEnvironment from paasng.platform.engine.configurations.provider import env_vars_providers -from paasng.platform.engine.constants import AppEnvName +from paasng.platform.engine.constants import AppEnvName, AppRunTimeBuiltinEnv from paasng.platform.modules.constants import ExposedURLType from paasng.platform.modules.helpers import get_module_clusters @@ -102,7 +102,7 @@ def _default_preallocated_urls(env: ModuleEnvironment) -> Dict[str, str]: addrs_value = json.dumps(addrs._asdict()) except ValueError: logger.warning("Fail to get preallocated address for application: %s, module: %s", application, env.module) - return {settings.CONFIGVAR_SYSTEM_PREFIX + "DEFAULT_PREALLOCATED_URLS": addrs_value} + return {settings.CONFIGVAR_SYSTEM_PREFIX + AppRunTimeBuiltinEnv.DEFAULT_PREALLOCATED_URLS.value: addrs_value} class PreAddresses(NamedTuple): diff --git a/apiserver/paasng/paasng/core/region/app.py b/apiserver/paasng/paasng/core/region/app.py index 5674f8e172..a00149367d 100644 --- a/apiserver/paasng/paasng/core/region/app.py +++ b/apiserver/paasng/paasng/core/region/app.py @@ -44,17 +44,17 @@ class BuiltInEnvsRegionHelper: "FOO" whose value was set to "bar_stag". While in prod environment, the value is "bar_prod". """ - def __init__(self, region_name, app_env, env_key_list): + def __init__(self, region_name, app_env, required_env_dict): self.region = get_region(region_name) self.app_env = app_env - self.key_list = env_key_list + self.required_env_dict = required_env_dict def get_envs(self): result = {} - for key in self.key_list: + for key in self.required_env_dict: value = self.region.get_built_in_config_var(key=key, env=self.app_env) if value: - result.update({key: value}) + result.update({key: {"value": value, "description": self.required_env_dict["key"]}}) return result diff --git a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py index 6a3d11df5c..91b59343f2 100644 --- a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py +++ b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py @@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Dict, Iterator from django.conf import settings +from django.utils.translation import gettext_lazy as _ from paasng.accessories.publish.entrance.preallocated import get_bk_doc_url_prefix from paasng.accessories.servicehub.manager import mixed_service_mgr @@ -134,66 +135,91 @@ def generate_runtime_env_vars_for_app(engine_app: "EngineApp", config_vars_prefi return add_prefix_to_key(runtime_envs, config_vars_prefix) -def generate_env_vars_by_region_and_env(region: str, environment: str, config_vars_prefix: str) -> Dict[str, str]: +def generate_env_vars_by_region_and_env( + region: str, environment: str, config_vars_prefix: str +) -> Dict[str, Dict[str, str]]: """Generate the platform address in the bk system by region and env""" # 需要按 region、env 写入不同值的变量 - region_related_envs = ["REMOTE_STATIC_URL", "LOGIN_URL", "LOGIN_DOMAIN", "APIGW_OAUTH_API_URL"] + region_related_envs = { + "REMOTE_STATIC_URL": {"description": _("平台提供的静态资源地址前缀,不推荐使用")}, + "LOGIN_URL": {"description": _("蓝鲸统一登录访问地址")}, + "LOGIN_DOMAIN": {"description": _("蓝鲸统一登录服务域名")}, + "APIGW_OAUTH_API_URL": {"description": _("蓝鲸 APIGW 提供的 OAuth 服务,不推荐使用")}, + } envs = BuiltInEnvsRegionHelper( - region_name=region, app_env=environment, env_key_list=region_related_envs + region_name=region, app_env=environment, required_env_dict=region_related_envs ).get_envs() # 微信内显示应用的静态资源地址前缀,从 PaaS2.0 上迁移过来的应用可能会用到 weixin_url = settings.BKPAAS_WEIXIN_URL_MAP.get(environment) - envs["WEIXIN_URL"] = weixin_url - envs["WEIXIN_REMOTE_STATIC_URL"] = f"{weixin_url}/static_api/" + envs["WEIXIN_URL"] = {"value": weixin_url, "description": _("应用移动端访问地址,不推荐使用")} + envs["WEIXIN_REMOTE_STATIC_URL"] = { + "value": f"{weixin_url}/static_api/", + "description": _("应用移动端静态资源地址前缀,不推荐使用"), + } # 系统环境变量需要添加统一的前缀 - envs_dict = add_prefix_to_key(envs, config_vars_prefix) + region_envs_with_prefix = add_prefix_to_key(envs, config_vars_prefix) # 不需要写入兼容性的环境变量,则直接返回 region_container = get_region(region) if not region_container.provide_env_vars_platform: - return envs_dict + return region_envs_with_prefix bk_envs = { # 私有化版本目前 SaaS 用到了该环境变量,需要推动切换到 BKPAAS_LOGIN_URL 这个环境变量 - "BK_LOGIN_URL": settings.LOGIN_FULL, + "BK_LOGIN_URL": { + "value": settings.LOGIN_FULL, + "description": _("蓝鲸统一登录访问地址,建议切换为 BKPAAS_LOGIN_URL"), + } } - bk_envs.update(settings.BK_PLATFORM_URLS) - return {**envs_dict, **bk_envs} + bk_envs.update(settings.BK_PAAS2_PLATFORM_ENVS) + return {**region_envs_with_prefix, **bk_envs} -def generate_env_vars_for_bk_platform(config_vars_prefix: str) -> Dict[str, str]: +def generate_env_vars_for_bk_platform(config_vars_prefix: str) -> Dict[str, Dict[str, str]]: """Generate the platform address in the bk system""" - system_envs = { - "BK_CRYPTO_TYPE": settings.BK_CRYPTO_TYPE, - "BK_DOMAIN": settings.BK_DOMAIN, - "URL": settings.BKPAAS_URL, - # 蓝鲸桌面地址 - "CONSOLE_URL": settings.BK_CONSOLE_URL, + "BK_DOMAIN": { + "value": settings.BK_DOMAIN, + "description": _("蓝鲸根域,用于获取登录票据、国际化语言等 cookie 信息"), + }, + "URL": {"value": settings.BKPAAS_URL, "description": _("蓝鲸PaaS平台访问URL")}, # 蓝鲸体系内产品地址 - "CC_URL": settings.BK_CC_URL, - "JOB_URL": settings.BK_JOB_URL, - "IAM_URL": settings.BK_IAM_URL, - "USER_URL": settings.BK_USER_URL, - "MONITORV3_URL": settings.BK_MONITORV3_URL, - "LOG_URL": settings.BK_LOG_URL, - "REPO_URL": settings.BK_REPO_URL, - "CI_URL": settings.BK_CI_URL, - "CODECC_URL": settings.BK_CODECC_URL, - "TURBO_URL": settings.BK_TURBO_URL, - "PIPELINE_URL": settings.BK_PIPELINE_URL, - "SHARED_RES_URL": settings.BK_SHARED_RES_URL, + "CONSOLE_URL": {"value": settings.BK_CONSOLE_URL, "description": _("蓝鲸桌面访问地址")}, + "CC_URL": {"value": settings.BK_CC_URL, "description": _("蓝鲸配置平台访问地址")}, + "JOB_URL": {"value": settings.BK_JOB_URL, "description": _("蓝鲸作业平台访问地址")}, + "IAM_URL": {"value": settings.BK_IAM_URL, "description": _("蓝鲸权限中心访问地址")}, + "USER_URL": {"value": settings.BK_USER_URL, "description": _("蓝鲸用户管理访问地址")}, + "MONITORV3_URL": {"value": settings.BK_MONITORV3_URL, "description": _("蓝鲸监控平台访问地址")}, + "LOG_URL": {"value": settings.BK_LOG_URL, "description": _("蓝鲸日志平台访问地址")}, + "REPO_URL": {"value": settings.BK_REPO_URL, "description": _("蓝鲸制品库访问地址")}, + "CI_URL": {"value": settings.BK_CI_URL, "description": _("蓝鲸持续集成平台(蓝盾)访问地址")}, + "CODECC_URL": {"value": settings.BK_CODECC_URL, "description": _("蓝鲸代码检查平台访问地址")}, + "TURBO_URL": {"value": settings.BK_TURBO_URL, "description": _("蓝鲸编译加速平台访问地址")}, + "PIPELINE_URL": {"value": settings.BK_PIPELINE_URL, "description": _("蓝鲸流水线访问地址")}, + "SHARED_RES_URL": { + "value": settings.BK_SHARED_RES_URL, + "description": _("蓝鲸产品 title/footer/name/logo 等资源自定义配置的路径"), + }, + "BK_CRYPTO_TYPE": { + "value": settings.BK_CRYPTO_TYPE, + "description": _( + "加密数据库内容的推荐算法,可选值有:`SHANGMI` , `CLASSIC`,分别对应 `SM4CTR`和`Fernet` 算法" + ), + }, } # 系统环境变量需要添加统一的前缀 - system_envs_dict = add_prefix_to_key(system_envs, config_vars_prefix) + system_envs_with_prefix = add_prefix_to_key(system_envs, config_vars_prefix) # 兼容私有化版本保留的 BK_ 前缀的环境变量 - system_envs_dict["BK_API_URL_TMPL"] = settings.BK_API_URL_TMPL - system_envs_dict["BK_COMPONENT_API_URL"] = settings.BK_COMPONENT_API_URL - system_envs_dict["BK_PAAS2_URL"] = settings.BK_PAAS2_URL - - return system_envs_dict + system_envs_with_prefix.update( + { + "BK_API_URL_TMPL": {"value": settings.BK_API_URL_TMPL, "description": _("网关 API 访问地址模板")}, + "BK_COMPONENT_API_URL": {"value": settings.BK_COMPONENT_API_URL, "description": _("组件 API 访问地址")}, + "BK_PAAS2_URL": {"value": settings.BK_PAAS2_URL, "description": _("PaaS2.0 开发者中心地址")}, + } + ) + return system_envs_with_prefix def generate_blobstore_env_vars(engine_app: "EngineApp") -> Dict[str, str]: @@ -214,12 +240,14 @@ def get_builtin_env_variables(engine_app: "EngineApp", config_vars_prefix: str) runtime_envs = generate_runtime_env_vars_for_app(engine_app, config_vars_prefix) # 蓝鲸体系内平台的访问地址 - bk_address_envs = generate_env_vars_for_bk_platform(config_vars_prefix) + bk_address_envs = _flatten_system_envs(generate_env_vars_for_bk_platform(config_vars_prefix)) environment = engine_app.env.environment region = engine_app.region # 需要根据 region、env 写入不同值的系统环境变量 - envs_by_region_and_env = generate_env_vars_by_region_and_env(region, environment, config_vars_prefix) + envs_by_region_and_env = _flatten_system_envs( + generate_env_vars_by_region_and_env(region, environment, config_vars_prefix) + ) return { **app_info_envs, @@ -234,3 +262,15 @@ def get_preset_env_variables(env: ModuleEnvironment) -> Dict[str, str]: """Get PresetEnvVariable as env variables dict""" qs: Iterator[PresetEnvVariable] = PresetEnvVariable.objects.filter(module=env.module) return {item.key: item.value for item in qs if item.is_within_scope(ConfigVarEnvName(env.environment))} + + +def _flatten_system_envs(nested_envs: Dict[str, Dict[str, str]]) -> Dict[str, str]: + """将嵌套的环境变量字典转换为扁平的键值对格式 + + 调用前:{"BK_CRYPTO_TYPE": {"value": settings.BK_CRYPTO_TYPE, "description": "这是一个变量描述")}} + 调用后:{"BK_CRYPTO_TYPE": settings.BK_CRYPTO_TYPE} + """ + flat_envs = {} + for key, value in nested_envs.items(): + flat_envs[key] = value["value"] + return flat_envs diff --git a/apiserver/paasng/paasng/platform/engine/constants.py b/apiserver/paasng/paasng/platform/engine/constants.py index faa6842b5b..4450c9f8fc 100644 --- a/apiserver/paasng/paasng/platform/engine/constants.py +++ b/apiserver/paasng/paasng/platform/engine/constants.py @@ -167,6 +167,10 @@ class AppRunTimeBuiltinEnv(str, StructuredEnum): ENVIRONMENT = EnumField("ENVIRONMENT", label=_("应用当前环境,预发布环境为 stag、生产环境为 prod")) MAJOR_VERSION = EnumField("MAJOR_VERSION", label=_("应用当前运行的开发者中心版本,值为 3")) ENGINE_REGION = EnumField("ENGINE_REGION", label=_("应用版本,默认版本为 default")) + DEFAULT_PREALLOCATED_URLS = EnumField( + "DEFAULT_PREALLOCATED_URLS", + label=_('应用模块各环境的访问地址,如 {"stag": "http://stag.com", "prod": "http://prod.com"}'), + ) class NoPrefixAppRunTimeBuiltinEnv(str, StructuredEnum): diff --git a/apiserver/paasng/paasng/platform/engine/models/config_var.py b/apiserver/paasng/paasng/platform/engine/models/config_var.py index ec5281446f..caf1e3fe4d 100644 --- a/apiserver/paasng/paasng/platform/engine/models/config_var.py +++ b/apiserver/paasng/paasng/platform/engine/models/config_var.py @@ -15,7 +15,7 @@ # We undertake not to change the open source license (MIT license) applicable # to the current version of the project delivered to anyone in the future. -from typing import TYPE_CHECKING, Dict +from typing import TYPE_CHECKING, Any, Dict from django.core.exceptions import ObjectDoesNotExist from django.db import models @@ -126,5 +126,5 @@ def clone_to(self, module: "Module") -> "ConfigVar": ) -def add_prefix_to_key(items: dict, prefix: str) -> Dict[str, str]: +def add_prefix_to_key(items: dict, prefix: str) -> Dict[str, Any]: return {f"{prefix}{key}": value for key, value in items.items()} diff --git a/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py b/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py index 348515aab1..94b63ba849 100644 --- a/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py +++ b/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py @@ -30,8 +30,8 @@ def get_global_envs(self) -> dict: BK_PAAS_HOST=settings.BK_PAAS2_URL, BK_PAAS_INNER_HOST=settings.BK_PAAS2_INNER_URL, ) - # 蓝鲸体系其他平台访问地址的环境变量 - variables.update(settings.BK_PLATFORM_URLS) + # PaaS2.0 注入的系统环境变量 + variables.update(settings.BK_PAAS2_PLATFORM_ENVS) return variables def get_stag_envs(self) -> dict: diff --git a/apiserver/paasng/paasng/settings/__init__.py b/apiserver/paasng/paasng/settings/__init__.py index cf56430364..beba954621 100644 --- a/apiserver/paasng/paasng/settings/__init__.py +++ b/apiserver/paasng/paasng/settings/__init__.py @@ -48,6 +48,7 @@ from bkpaas_auth.core.constants import ProviderType from django.contrib import messages from django.utils.encoding import force_bytes, force_str +from django.utils.translation import gettext_lazy as _ from dynaconf import LazySettings, Validator from environ import Env @@ -806,15 +807,24 @@ def _build_file_handler(log_path: Path, filename: str, format: str) -> Dict: # 蓝鲸产品 title/footer/name/logo 等资源自定义配置的路径 BK_SHARED_RES_URL = settings.get("BK_SHARED_RES_URL", "") -BK_PLATFORM_URLS = settings.get( - "BK_PLATFORM_URLS", +# PaaS2.0 注入的系统环境变量 +BK_PAAS2_PLATFORM_ENVS = settings.get( + "BK_PAAS2_PLATFORM_ENVS", { - # 旧版 IAM 地址,目前已废弃 - "BK_IAM_INNER_HOST": settings.get("BK_IAM_INNER_URL", "http://:"), - "BK_IAM_V3_APP_CODE": settings.get("BK_IAM_V3_APP_CODE", "bk_iam"), - "BK_IAM_V3_INNER_HOST": BK_IAM_V3_INNER_URL, - "BK_CC_HOST": BK_CC_URL, - "BK_JOB_HOST": BK_JOB_URL, + "BK_IAM_INNER_HOST": { + "value": settings.get("BK_IAM_INNER_URL", "http://:"), + "description": _("蓝鲸权限中心旧版地址,建议切换为 BKPAAS_IAM_URL"), + }, + "BK_IAM_V3_APP_CODE": { + "value": settings.get("BK_IAM_V3_APP_CODE", "bk_iam"), + "description": _("蓝鲸权限中心的应用ID"), + }, + "BK_IAM_V3_INNER_HOST": { + "value": BK_IAM_V3_INNER_URL, + "description": _("蓝鲸权限中心内网访问地址,建议切换为 BKPAAS_IAM_URL"), + }, + "BK_CC_HOST": {"value": BK_CC_URL, "description": _("蓝鲸配置平台访问地址,建议切换为 BKPAAS_CC_URL")}, + "BK_JOB_HOST": {"value": BK_JOB_URL, "description": _("蓝鲸作业平台访问地址,建议切换为 BKPAAS_JOB_URL")}, }, ) diff --git a/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py b/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py index 4355c35d64..9ed327821f 100644 --- a/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py +++ b/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py @@ -142,7 +142,7 @@ def update_region_hook(config): assert ("BK_LOGIN_URL" in config_vars) == provide_env_vars_platform # 应用是需要写入蓝鲸体系其他系统访问地址的环境变量 if provide_env_vars_platform: - assert set(settings.BK_PLATFORM_URLS.keys()).issubset(set(config_vars.keys())) == contain_bk_envs + assert set(settings.BK_PAAS2_PLATFORM_ENVS.keys()).issubset(set(config_vars.keys())) == contain_bk_envs def test_builtin_env_keys(self, bk_app): bk_module = bk_app.get_default_module() From 9e333a699f9956780de8a062f73e6908c63c1a06 Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Tue, 9 Jul 2024 11:36:42 +0800 Subject: [PATCH 07/16] fix: minor --- .../paasng/platform/engine/configurations/config_var.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py index 91b59343f2..4fbd2bad37 100644 --- a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py +++ b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py @@ -240,12 +240,12 @@ def get_builtin_env_variables(engine_app: "EngineApp", config_vars_prefix: str) runtime_envs = generate_runtime_env_vars_for_app(engine_app, config_vars_prefix) # 蓝鲸体系内平台的访问地址 - bk_address_envs = _flatten_system_envs(generate_env_vars_for_bk_platform(config_vars_prefix)) + bk_address_envs = _flatten_envs(generate_env_vars_for_bk_platform(config_vars_prefix)) environment = engine_app.env.environment region = engine_app.region # 需要根据 region、env 写入不同值的系统环境变量 - envs_by_region_and_env = _flatten_system_envs( + envs_by_region_and_env = _flatten_envs( generate_env_vars_by_region_and_env(region, environment, config_vars_prefix) ) @@ -264,7 +264,7 @@ def get_preset_env_variables(env: ModuleEnvironment) -> Dict[str, str]: return {item.key: item.value for item in qs if item.is_within_scope(ConfigVarEnvName(env.environment))} -def _flatten_system_envs(nested_envs: Dict[str, Dict[str, str]]) -> Dict[str, str]: +def _flatten_envs(nested_envs: Dict[str, Dict[str, str]]) -> Dict[str, str]: """将嵌套的环境变量字典转换为扁平的键值对格式 调用前:{"BK_CRYPTO_TYPE": {"value": settings.BK_CRYPTO_TYPE, "description": "这是一个变量描述")}} From 74888a22fd9d72b595d31dc71d6a6975a1de692a Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Tue, 9 Jul 2024 14:30:29 +0800 Subject: [PATCH 08/16] fix: unitest --- apiserver/paasng/paasng/core/region/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apiserver/paasng/paasng/core/region/app.py b/apiserver/paasng/paasng/core/region/app.py index a00149367d..cefe9f6e96 100644 --- a/apiserver/paasng/paasng/core/region/app.py +++ b/apiserver/paasng/paasng/core/region/app.py @@ -54,7 +54,7 @@ def get_envs(self): for key in self.required_env_dict: value = self.region.get_built_in_config_var(key=key, env=self.app_env) if value: - result.update({key: {"value": value, "description": self.required_env_dict["key"]}}) + result.update({key: {"value": value, "description": self.required_env_dict[key]}}) return result From dc730738b6a98ab916b5f10cb7b581e63e422528 Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Tue, 9 Jul 2024 14:58:07 +0800 Subject: [PATCH 09/16] fix: unitest --- .../platform/engine/configurations/test_config_var.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py b/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py index 9ed327821f..2bf3b1c166 100644 --- a/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py +++ b/apiserver/paasng/tests/paasng/platform/engine/configurations/test_config_var.py @@ -153,6 +153,10 @@ def test_builtin_env_keys(self, bk_app): config_vars.keys() ) - # 运行时相关的环境变量 - runtime_env_keys = [f"{settings.CONFIGVAR_SYSTEM_PREFIX}{key}" for key in AppRunTimeBuiltinEnv.get_values()] + # 运行时相关的环境变量,其中 DEFAULT_PREALLOCATED_URLS 是在 _default_preallocated_urls() 中单独处理的环境变量 + runtime_env_keys = [ + f"{settings.CONFIGVAR_SYSTEM_PREFIX}{key}" + for key in AppRunTimeBuiltinEnv.get_values() + if key != AppRunTimeBuiltinEnv.DEFAULT_PREALLOCATED_URLS.value + ] assert set(runtime_env_keys).issubset(config_vars.keys()) From 39cdd1a1eda9fbadbb9270d71c83e8d2a35a0464 Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Mon, 15 Jul 2024 15:04:27 +0800 Subject: [PATCH 10/16] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiserver/paasng/conf.yaml.tpl | 2 +- .../paasng/platform/engine/configurations/config_var.py | 4 +--- .../paasng/paasng/platform/mgrlegacy/app_migrations/envs.py | 2 +- apiserver/paasng/paasng/settings/__init__.py | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/apiserver/paasng/conf.yaml.tpl b/apiserver/paasng/conf.yaml.tpl index dc880dd8c8..8cb2dab3d7 100644 --- a/apiserver/paasng/conf.yaml.tpl +++ b/apiserver/paasng/conf.yaml.tpl @@ -308,7 +308,7 @@ # BK_TURBO_URL: '' ## 蓝盾流水线服务地址 # BK_PIPELINE_URL: '' -## PaaS2.0 注入的系统环境变量,格式如:{"BK_SOPS_URL": "http://localhost:8080"} +## 兼容 PaaS 2.0 注入的内置环境变量,格式如:{"BK_SOPS_URL": "http://localhost:8080"} # BK_PAAS2_PLATFORM_ENVS: {} ## 应用移动端访问地址,用于渲染模板与内置环境变量的配置项 diff --git a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py index 4fbd2bad37..3f14c563c0 100644 --- a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py +++ b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py @@ -204,9 +204,7 @@ def generate_env_vars_for_bk_platform(config_vars_prefix: str) -> Dict[str, Dict }, "BK_CRYPTO_TYPE": { "value": settings.BK_CRYPTO_TYPE, - "description": _( - "加密数据库内容的推荐算法,可选值有:`SHANGMI` , `CLASSIC`,分别对应 `SM4CTR`和`Fernet` 算法" - ), + "description": _("加密数据库内容的推荐算法有:SHANGMI(对应 SM4CTR 算法)和 CLASSIC(对应 Fernet 算法)"), }, } # 系统环境变量需要添加统一的前缀 diff --git a/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py b/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py index 94b63ba849..45a15ac1ac 100644 --- a/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py +++ b/apiserver/paasng/paasng/platform/mgrlegacy/app_migrations/envs.py @@ -30,7 +30,7 @@ def get_global_envs(self) -> dict: BK_PAAS_HOST=settings.BK_PAAS2_URL, BK_PAAS_INNER_HOST=settings.BK_PAAS2_INNER_URL, ) - # PaaS2.0 注入的系统环境变量 + # 兼容 PaaS 2.0 注入的内置环境变量,确保应用迁移到 PaaS 3.0 后内置系统环境变量仍然有效 variables.update(settings.BK_PAAS2_PLATFORM_ENVS) return variables diff --git a/apiserver/paasng/paasng/settings/__init__.py b/apiserver/paasng/paasng/settings/__init__.py index beba954621..50dc788193 100644 --- a/apiserver/paasng/paasng/settings/__init__.py +++ b/apiserver/paasng/paasng/settings/__init__.py @@ -807,7 +807,7 @@ def _build_file_handler(log_path: Path, filename: str, format: str) -> Dict: # 蓝鲸产品 title/footer/name/logo 等资源自定义配置的路径 BK_SHARED_RES_URL = settings.get("BK_SHARED_RES_URL", "") -# PaaS2.0 注入的系统环境变量 +# 兼容 PaaS 2.0 注入的内置环境变量,确保应用迁移到 PaaS 3.0 后内置系统环境变量仍然有效 BK_PAAS2_PLATFORM_ENVS = settings.get( "BK_PAAS2_PLATFORM_ENVS", { From b61dc34eee659f1a5ed41e9c7b2a6a942db06f9e Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Mon, 15 Jul 2024 15:57:58 +0800 Subject: [PATCH 11/16] =?UTF-8?q?feat:=20=E5=A4=84=E7=90=86=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paasng/locale/en/LC_MESSAGES/django.mo | Bin 52716 -> 56054 bytes .../paasng/locale/en/LC_MESSAGES/django.po | 1958 ++++++++++------- 2 files changed, 1123 insertions(+), 835 deletions(-) diff --git a/apiserver/paasng/locale/en/LC_MESSAGES/django.mo b/apiserver/paasng/locale/en/LC_MESSAGES/django.mo index cfc3d88c1e452873e1aee5987aad914a43b7f7a3..eddc42e417fb3bd7472a42d1e031a690a5a7b897 100644 GIT binary patch delta 15653 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 delta 12215 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 diff --git a/apiserver/paasng/locale/en/LC_MESSAGES/django.po b/apiserver/paasng/locale/en/LC_MESSAGES/django.po index dd2c8c8347..3418136512 100644 --- a/apiserver/paasng/locale/en/LC_MESSAGES/django.po +++ b/apiserver/paasng/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-27 14:39+0800\n" +"POT-Creation-Date: 2024-07-15 15:05+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,130 +18,132 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: paas_wl/bk_app/cnative/specs/constants.py:82 +#: paas_wl/bk_app/cnative/specs/constants.py:73 msgid "待实施" msgstr "Pending" -#: paas_wl/bk_app/cnative/specs/constants.py:83 +#: paas_wl/bk_app/cnative/specs/constants.py:74 msgid "进行中" msgstr "Ongoing" -#: paas_wl/bk_app/cnative/specs/constants.py:84 +#: paas_wl/bk_app/cnative/specs/constants.py:75 msgid "已就绪" msgstr "Ready" -#: paas_wl/bk_app/cnative/specs/constants.py:85 +#: paas_wl/bk_app/cnative/specs/constants.py:76 msgid "错误" msgstr "Error" -#: paas_wl/bk_app/cnative/specs/constants.py:86 -#: paasng/misc/operations/models.py:113 paasng/misc/operations/models.py:167 -#: paasng/misc/operations/models.py:221 paasng/misc/operations/models.py:270 +#: paas_wl/bk_app/cnative/specs/constants.py:77 +#: paasng/misc/operations/models.py:112 paasng/misc/operations/models.py:166 +#: paasng/misc/operations/models.py:220 paasng/misc/operations/models.py:269 msgid "未知" msgstr "Unknown" -#: paas_wl/bk_app/cnative/specs/image_parser.py:54 +#: paas_wl/bk_app/cnative/specs/image_parser.py:52 msgid "spec.build.image is missing" msgstr "spec.build.image is missing" -#: paas_wl/bk_app/cnative/specs/image_parser.py:75 -msgid "image is missing" -msgstr "image is missing" - -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:79 -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:109 -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:160 -#: paas_wl/bk_app/cnative/specs/models/mount.py:37 -#: paas_wl/bk_app/cnative/specs/models/mount.py:56 -#: paas_wl/workloads/images/models.py:70 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:87 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:117 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:168 +#: paas_wl/bk_app/cnative/specs/models/mount.py:36 +#: paas_wl/bk_app/cnative/specs/models/mount.py:55 +#: paas_wl/workloads/images/models.py:69 msgid "所属应用" msgstr "APP" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:80 -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:110 -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:161 -#: paas_wl/bk_app/cnative/specs/models/mount.py:38 -#: paas_wl/bk_app/cnative/specs/models/mount.py:57 -#: paas_wl/bk_app/cnative/specs/models/mount.py:76 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:88 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:118 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:169 +#: paas_wl/bk_app/cnative/specs/models/mount.py:37 +#: paas_wl/bk_app/cnative/specs/models/mount.py:56 +#: paas_wl/bk_app/cnative/specs/models/mount.py:75 msgid "所属模块" msgstr "Module" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:114 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:122 msgid "模型版本" msgstr "Model version" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:115 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:123 msgid "应用模型(YAML 格式)" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:117 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:125 msgid "应用模型(JSON 格式)" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:120 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:128 msgid "已部署的应用模型(JSON 格式)" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:121 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:129 msgid "是否已部署" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:122 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:130 msgid "是否草稿" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:123 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:131 msgid "是否已删除" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:164 -#: paas_wl/bk_app/cnative/specs/models/mount.py:40 -#: paas_wl/bk_app/cnative/specs/models/mount.py:59 -#: paas_wl/bk_app/cnative/specs/models/mount.py:80 -#: paasng/platform/bkapp_model/models.py:137 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:172 +#: paas_wl/bk_app/cnative/specs/models/mount.py:39 +#: paas_wl/bk_app/cnative/specs/models/mount.py:58 +#: paas_wl/bk_app/cnative/specs/models/mount.py:79 +#: paasng/platform/bkapp_model/models.py:134 +#: paasng/platform/engine/models/preset_envvars.py:32 msgid "环境名称" msgstr "Env Name" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:168 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:176 msgid "Deploy 名称" msgstr "Deploy Name" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:173 -#: paasng/platform/engine/models/phases.py:59 -#: paasng/platform/engine/models/steps.py:140 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:181 +#: paasng/platform/engine/models/phases.py:58 +#: paasng/platform/engine/models/steps.py:139 msgid "状态" msgstr "Status" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:175 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:183 msgid "状态原因" msgstr "Status reason" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:176 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:184 msgid "状态描述文字" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:177 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:185 msgid "状态最近变更时间" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/app_resource.py:179 +#: paas_wl/bk_app/cnative/specs/models/app_resource.py:187 msgid "操作者" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/mount.py:42 -#: paas_wl/bk_app/cnative/specs/models/mount.py:61 +#: paas_wl/bk_app/cnative/specs/models/mount.py:41 +#: paas_wl/bk_app/cnative/specs/models/mount.py:60 msgid "挂载资源名" msgstr "" -#: paas_wl/bk_app/cnative/specs/models/mount.py:82 +#: paas_wl/bk_app/cnative/specs/models/mount.py:43 +#: paas_wl/bk_app/cnative/specs/models/mount.py:63 +msgid "挂载资源展示名称" +msgstr "" + +#: paas_wl/bk_app/cnative/specs/models/mount.py:81 msgid "挂载点的名称" msgstr "" -#: paas_wl/bk_app/cnative/specs/mounts.py:198 +#: paas_wl/bk_app/cnative/specs/mounts.py:200 msgid "删除持久存储资源失败,请先删除相应挂载卷资源" msgstr "" -#: paas_wl/bk_app/cnative/specs/serializers.py:58 +#: paas_wl/bk_app/cnative/specs/serializers.py:57 msgid "" "挂载卷内容为一个字典,其中键表示文件名称,值表示文件内容。例如:{'file1." "yaml': 'file1 content', 'file2.yaml': 'file2 content'}" @@ -150,7 +152,7 @@ msgstr "" "file contents. For example:{'file1.yaml': 'file1 content', 'file2.yaml': " "'file2 content'}" -#: paas_wl/bk_app/cnative/specs/serializers.py:81 +#: paas_wl/bk_app/cnative/specs/serializers.py:80 msgid "挂载卷名称" msgstr "Volume Name" @@ -179,517 +181,524 @@ msgstr "" msgid "获取挂载卷内容信息失败" msgstr "Failed to get process information" -#: paas_wl/bk_app/cnative/specs/serializers.py:204 +#: paas_wl/bk_app/cnative/specs/serializers.py:211 +#: paas_wl/bk_app/cnative/specs/serializers.py:239 +msgid "已存在同名挂载资源" +msgstr "" + +#: paas_wl/bk_app/cnative/specs/serializers.py:217 +#: paas_wl/bk_app/cnative/specs/serializers.py:223 msgid "挂载资源的名称" msgstr "" -#: paas_wl/bk_app/cnative/specs/serializers.py:212 +#: paas_wl/bk_app/cnative/specs/serializers.py:247 msgid "挂载卷资源类型" msgstr "" -#: paas_wl/bk_app/cnative/specs/serializers.py:213 +#: paas_wl/bk_app/cnative/specs/serializers.py:248 msgid "已绑定模块信息" msgstr "" -#: paas_wl/bk_app/cnative/specs/serializers.py:217 +#: paas_wl/bk_app/cnative/specs/serializers.py:252 msgid "显示名称" msgstr "" -#: paas_wl/bk_app/cnative/specs/views.py:120 +#: paas_wl/bk_app/cnative/specs/views.py:115 msgid "权限不足或仓库不可达" msgstr "Insufficient permissions or repository unreachable" -#: paas_wl/bk_app/cnative/specs/views.py:155 +#: paas_wl/bk_app/cnative/specs/views.py:137 msgid "镜像凭证不存在" msgstr "Image credentials not found" -#: paas_wl/bk_app/cnative/specs/views.py:172 +#: paas_wl/bk_app/cnative/specs/views.py:154 msgid "查看镜像 Tag" msgstr "View image Tag" -#: paas_wl/bk_app/cnative/specs/views.py:180 +#: paas_wl/bk_app/cnative/specs/views.py:162 #: paasng/platform/sourcectl/views.py:413 #, python-format msgid "%s的仓库信息查询异常" msgstr "The warehouse information query of %s is abnormal" -#: paas_wl/bk_app/cnative/specs/views.py:237 -#: paas_wl/bk_app/cnative/specs/views.py:276 +#: paas_wl/bk_app/cnative/specs/views.py:219 +#: paas_wl/bk_app/cnative/specs/views.py:258 msgid "同环境和路径挂载卷已存在" msgstr "Mount volume already exists in the same environment and path." -#: paas_wl/bk_app/cnative/specs/views.py:339 +#: paas_wl/bk_app/cnative/specs/views.py:321 msgid "当前应用暂不支持持久存储功能,请联系管理员" msgstr "" -#: paas_wl/bk_app/processes/controllers.py:51 +#: paas_wl/bk_app/processes/controllers.py:50 msgid "进程操作过于频繁,请间隔 {operation_interval.total_seconds()} 秒再试。" msgstr "" "Process operations too frequent. Please try again after an interval of " "{operation_interval.total_seconds()} seconds." -#: paas_wl/bk_app/processes/serializers.py:310 +#: paas_wl/bk_app/processes/serializers.py:318 msgid "资源指标值/百分比" msgstr "Resource metric value/percentage" -#: paas_wl/bk_app/processes/serializers.py:317 +#: paas_wl/bk_app/processes/serializers.py:325 msgid "最小副本数" msgstr "Minimum replicas" -#: paas_wl/bk_app/processes/serializers.py:318 +#: paas_wl/bk_app/processes/serializers.py:326 msgid "最大副本数" msgstr "Maximum replicas" -#: paas_wl/bk_app/processes/serializers.py:319 +#: paas_wl/bk_app/processes/serializers.py:327 msgid "扩缩容策略" msgstr "Scaling policy" -#: paas_wl/bk_app/processes/serializers.py:320 +#: paas_wl/bk_app/processes/serializers.py:328 msgid "扩缩容指标" msgstr "Scaling indicators" -#: paas_wl/bk_app/processes/serializers.py:366 +#: paas_wl/bk_app/processes/serializers.py:374 msgid "目标进程副本数" msgstr "Target number of process replicas" -#: paas_wl/bk_app/processes/serializers.py:367 +#: paas_wl/bk_app/processes/serializers.py:375 msgid "是否开启自动扩缩容" msgstr "Auto-scaling enabled" -#: paas_wl/bk_app/processes/serializers.py:368 +#: paas_wl/bk_app/processes/serializers.py:376 msgid "进程扩缩容配置" msgstr "Process scaling settings" -#: paas_wl/bk_app/processes/serializers.py:374 +#: paas_wl/bk_app/processes/serializers.py:382 msgid "当启用自动扩缩容时,必须提供有效的 scaling_config" msgstr "When auto-scaling is enabled, a valid scaling_config must be provided" -#: paas_wl/bk_app/processes/serializers.py:376 +#: paas_wl/bk_app/processes/serializers.py:384 msgid "当操作类型为扩缩容时,必须提供有效的 target_replicas" msgstr "" "When the operation type is scaling, valid target_replicas must be provided" -#: paas_wl/bk_app/processes/serializers.py:386 +#: paas_wl/bk_app/processes/serializers.py:394 msgid "scaling_config 配置格式有误:{}" msgstr "Incorrect format for scaling_config: {}" -#: paas_wl/bk_app/processes/views.py:95 +#: paas_wl/bk_app/processes/views.py:96 msgid "环境未就绪或已下架, 请尝试重新部署" msgstr "" -#: paas_wl/infras/cluster/constants.py:33 -#: paasng/platform/engine/constants.py:34 +#: paas_wl/infras/cluster/constants.py:32 +#: paasng/platform/engine/constants.py:33 msgid "普通集群" msgstr "Standard cluster" -#: paas_wl/infras/cluster/constants.py:34 -#: paasng/platform/engine/constants.py:35 +#: paas_wl/infras/cluster/constants.py:33 +#: paasng/platform/engine/constants.py:34 msgid "虚拟集群" msgstr "Virtual cluster" -#: paas_wl/infras/cluster/constants.py:44 +#: paas_wl/infras/cluster/constants.py:43 msgid "支持提供出口 IP" msgstr "Supports providing egress IP" -#: paas_wl/infras/cluster/constants.py:45 +#: paas_wl/infras/cluster/constants.py:44 msgid "允许挂载日志到主机" msgstr "Allows mounting logs to host" -#: paas_wl/infras/cluster/constants.py:51 +#: paas_wl/infras/cluster/constants.py:50 msgid "Ingress路径是否使用正则表达式" msgstr "Ingress path uses regex" -#: paas_wl/infras/cluster/constants.py:53 +#: paas_wl/infras/cluster/constants.py:52 msgid "支持蓝鲸监控" msgstr "Supports BlueKing monitoring" -#: paas_wl/infras/cluster/constants.py:58 +#: paas_wl/infras/cluster/constants.py:57 +#: paasng/platform/applications/constants.py:96 msgid "使用蓝鲸日志平台方案采集日志" msgstr "Uses BlueKing log platform for log collection" -#: paas_wl/infras/cluster/constants.py:62 +#: paas_wl/infras/cluster/constants.py:61 msgid "支持自动扩容" msgstr "Supports auto-scaling" -#: paas_wl/infras/cluster/constants.py:64 +#: paas_wl/infras/cluster/constants.py:63 msgid "支持 BCS Egress" msgstr "Supports BCS Egress" -#: paas_wl/infras/cluster/serializers.py:53 +#: paas_wl/infras/cluster/serializers.py:52 msgid "`sub_path_domains` 与 `app_root_domains` 不能同时为空" msgstr "`sub_path_domains` and `app_root_domains` cannot both be empty" -#: paas_wl/utils/error_codes.py:24 +#: paas_wl/utils/error_codes.py:23 msgid "进程操作失败" msgstr "Process operation failed" -#: paas_wl/utils/error_codes.py:27 +#: paas_wl/utils/error_codes.py:26 msgid "无法获取出口 IP 信息" msgstr "Unable to obtain egress IP information" -#: paas_wl/utils/error_codes.py:28 +#: paas_wl/utils/error_codes.py:27 msgid "无法清除出口 IP 信息" msgstr "Unable to clear egress IP information" -#: paas_wl/utils/error_codes.py:32 +#: paas_wl/utils/error_codes.py:31 msgid "无法更新进程服务" msgstr "Unable to update process service" -#: paas_wl/utils/error_codes.py:33 +#: paas_wl/utils/error_codes.py:32 msgid "无法更新主入口" msgstr "Unable to update main entrance" -#: paas_wl/utils/error_codes.py:36 paasng/utils/error_codes.py:42 +#: paas_wl/utils/error_codes.py:35 paasng/utils/error_codes.py:42 msgid "操作进程失败" msgstr "Operation process failure" -#: paas_wl/utils/error_codes.py:37 paasng/utils/error_codes.py:44 +#: paas_wl/utils/error_codes.py:36 paasng/utils/error_codes.py:44 msgid "进程操作过于频繁,请稍后再试" msgstr "The process is operating too often, please try again later" -#: paas_wl/utils/error_codes.py:40 +#: paas_wl/utils/error_codes.py:39 msgid "删除独立域名失败" msgstr "Failed to delete standalone domain" -#: paas_wl/utils/error_codes.py:41 +#: paas_wl/utils/error_codes.py:40 msgid "创建独立域名失败" msgstr "Failed to create standalone domain" -#: paas_wl/utils/error_codes.py:42 +#: paas_wl/utils/error_codes.py:41 msgid "修改独立域名失败" msgstr "Failed to modify standalone domain" -#: paas_wl/utils/error_codes.py:45 +#: paas_wl/utils/error_codes.py:44 msgid "该功能当前版本不支持" msgstr "This feature is not supported in the current version" -#: paas_wl/utils/error_codes.py:48 +#: paas_wl/utils/error_codes.py:47 msgid "未设置部署信息" msgstr "Deployment information not set" -#: paas_wl/utils/error_codes.py:49 +#: paas_wl/utils/error_codes.py:48 msgid "The bkapp is invalid" msgstr "The bkapp is invalid" -#: paas_wl/utils/error_codes.py:50 +#: paas_wl/utils/error_codes.py:49 msgid "Failed to find deployed version" msgstr "Failed to find deployed version" -#: paas_wl/utils/error_codes.py:51 +#: paas_wl/utils/error_codes.py:50 msgid "Failed to list tag from image repository" msgstr "Failed to list tag from image repository" -#: paas_wl/utils/error_codes.py:52 +#: paas_wl/utils/error_codes.py:51 msgid "Failed to create volume mount" msgstr "Failed to create volume mount" -#: paas_wl/utils/error_codes.py:53 +#: paas_wl/utils/error_codes.py:52 msgid "Failed to list volume mount" msgstr "Failed to list volume mount" -#: paas_wl/utils/error_codes.py:54 +#: paas_wl/utils/error_codes.py:53 msgid "Failed to update volume mount" msgstr "Failed to update volume mount" -#: paas_wl/utils/error_codes.py:55 +#: paas_wl/utils/error_codes.py:54 #, fuzzy #| msgid "Failed to list volume mount" msgid "Failed to list volume mount sources" msgstr "Failed to list volume mount" -#: paas_wl/utils/error_codes.py:56 +#: paas_wl/utils/error_codes.py:55 #, fuzzy #| msgid "Failed to create volume mount" msgid "Failed to create volume mount source" msgstr "Failed to create volume mount" -#: paas_wl/utils/error_codes.py:59 +#: paas_wl/utils/error_codes.py:58 msgid "Failed to create credentials" msgstr "Failed to create credentials" -#: paas_wl/utils/error_codes.py:60 +#: paas_wl/utils/error_codes.py:59 msgid "Image credentials is invalid" msgstr "Image credentials is invalid" -#: paas_wl/utils/error_codes.py:61 +#: paas_wl/utils/error_codes.py:60 #, fuzzy #| msgid "Failed to create credentials" msgid "Failed to delete credentials" msgstr "Failed to create credentials" -#: paas_wl/utils/error_codes.py:64 +#: paas_wl/utils/error_codes.py:63 #, fuzzy #| msgid "Failed to create credentials" msgid "Failed to switch default cluster" msgstr "Failed to create credentials" -#: paas_wl/utils/error_codes.py:65 +#: paas_wl/utils/error_codes.py:64 msgid "Cluster component not exist" msgstr "Cluster component not exist" -#: paas_wl/workloads/autoscaling/constants.py:60 +#: paas_wl/workloads/autoscaling/constants.py:59 msgid "CPU 使用率" msgstr "CPU usage rate" -#: paas_wl/workloads/autoscaling/constants.py:61 +#: paas_wl/workloads/autoscaling/constants.py:60 msgid "内存使用率" msgstr "Memory usage rate" -#: paas_wl/workloads/autoscaling/constants.py:62 +#: paas_wl/workloads/autoscaling/constants.py:61 msgid "CPU 使用量" msgstr "CPU usage amount" -#: paas_wl/workloads/autoscaling/constants.py:63 +#: paas_wl/workloads/autoscaling/constants.py:62 msgid "内存使用量" msgstr "Memory usage amount" -#: paas_wl/workloads/images/views.py:58 -#: paasng/platform/applications/views.py:718 -#: paasng/platform/modules/views.py:324 +#: paas_wl/workloads/images/views.py:57 +#: paasng/platform/applications/views.py:758 +#: paasng/platform/modules/views.py:323 msgid "同名凭证已存在" msgstr "Credential with the same name already exists" -#: paas_wl/workloads/images/views.py:76 +#: paas_wl/workloads/images/views.py:75 msgid "该凭证已被应用使用" msgstr "" -#: paas_wl/workloads/networking/egress/views.py:65 +#: paas_wl/workloads/networking/egress/views.py:64 msgid "新建出口 IP 绑定功能已禁用,如有需要请联系管理员" msgstr "" "Creation of egress IP binding is disabled; please contact the administrator " "if needed" -#: paas_wl/workloads/networking/entrance/serializers.py:54 +#: paas_wl/workloads/networking/entrance/serializers.py:53 msgid "域名格式错误" msgstr "Parameter format error" -#: paas_wl/workloads/networking/entrance/serializers.py:65 +#: paas_wl/workloads/networking/entrance/serializers.py:64 msgid "该域名与路径组合已被其他应用或模块使用" msgstr "" "This domain and path combination is already in use by another APP or module." -#: paas_wl/workloads/networking/ingress/serializers.py:52 +#: paas_wl/workloads/networking/ingress/serializers.py:51 msgid "内部服务端口列表 ports 不能为空" msgstr "Internal service ports list ports cannot be empty" -#: paas_wl/workloads/networking/ingress/serializers.py:61 +#: paas_wl/workloads/networking/ingress/serializers.py:60 #, python-brace-format msgid "端口列表中发现重复值 {value}" msgstr "Duplicate value {value} found in the ports list" -#: paasng/accessories/app_secret/views.py:82 +#: paasng/accessories/app_secret/views.py:81 #, python-brace-format msgid "密钥已达到上限,应用仅允许有 {MAX_SECRET_COUNT} 个密钥" msgstr "" "Secrets have reached the limit, the application is only allowed to have " "{MAX_SECRET_COUNT} secrets" -#: paasng/accessories/app_secret/views.py:99 +#: paasng/accessories/app_secret/views.py:98 msgid "当前密钥为内置密钥,不允许被禁用" msgstr "The current key is built-in and cannot be disabled." -#: paasng/accessories/app_secret/views.py:114 +#: paasng/accessories/app_secret/views.py:113 #, python-brace-format msgid "应用至少有 {MAX_SECRET_COUNT} 个密钥" msgstr "Application must have at least {MAX_SECRET_COUNT} secrets" -#: paasng/accessories/app_secret/views.py:119 -#: paasng/accessories/app_secret/views.py:150 -#: paasng/accessories/app_secret/views.py:189 +#: paasng/accessories/app_secret/views.py:118 +#: paasng/accessories/app_secret/views.py:149 +#: paasng/accessories/app_secret/views.py:188 msgid "密钥不存在" msgstr "Secret does not exist" -#: paasng/accessories/app_secret/views.py:122 +#: paasng/accessories/app_secret/views.py:121 msgid "密钥状态为:已启用,请先禁用后再删除密钥" msgstr "The secret is enabled; please disable it before deletion" -#: paasng/accessories/app_secret/views.py:126 +#: paasng/accessories/app_secret/views.py:125 msgid "当前密钥为内置密钥,不允许删除" msgstr "The current secret is built-in and cannot be deleted" -#: paasng/accessories/app_secret/views.py:144 -#: paasng/platform/applications/views.py:964 -#: paasng/platform/sourcectl/views.py:178 +#: paasng/accessories/app_secret/views.py:143 +#: paasng/platform/applications/views.py:1004 +#: paasng/platform/sourcectl/views.py:176 msgid "验证码错误" msgstr "Verification code error" -#: paasng/accessories/app_secret/views.py:191 +#: paasng/accessories/app_secret/views.py:190 msgid "密钥已被禁用,不能设置为内置密钥" msgstr "A disabled secret cannot be set as a built-in secret" -#: paasng/accessories/log/client.py:169 paasng/accessories/log/client.py:273 -#: paasng/bk_plugins/pluginscenter/log/client.py:182 +#: paasng/accessories/log/client.py:171 paasng/accessories/log/client.py:275 +#: paasng/bk_plugins/pluginscenter/log/client.py:181 msgid "No mappings available, maybe index does not exist or no logs at all" msgstr "No mappings available, maybe index does not exist or no logs at all" -#: paasng/accessories/log/models.py:86 paasng/accessories/log/models.py:99 -#: paasng/accessories/log/models.py:170 +#: paasng/accessories/log/models.py:85 paasng/accessories/log/models.py:98 +#: paasng/accessories/log/models.py:169 msgid "采集配置ID" msgstr "" -#: paasng/accessories/log/models.py:126 +#: paasng/accessories/log/models.py:125 msgid "进程类型(名称)" msgstr "" -#: paasng/accessories/log/models.py:165 +#: paasng/accessories/log/models.py:164 msgid "自定义采集项名称" msgstr "" -#: paasng/accessories/log/models.py:171 +#: paasng/accessories/log/models.py:170 msgid "索引集ID" msgstr "" -#: paasng/accessories/log/models.py:172 +#: paasng/accessories/log/models.py:171 msgid "数据管道ID" msgstr "" -#: paasng/accessories/log/models.py:174 +#: paasng/accessories/log/models.py:173 msgid "日志文件的绝对路径,可使用 通配符;" msgstr "" -#: paasng/accessories/log/models.py:175 +#: paasng/accessories/log/models.py:174 msgid "日志类型" msgstr "" -#: paasng/accessories/log/models.py:177 +#: paasng/accessories/log/models.py:176 msgid "是否为内置采集项" msgstr "" -#: paasng/accessories/log/models.py:178 +#: paasng/accessories/log/models.py:177 msgid "是否启用" msgstr "" -#: paasng/accessories/log/serializers.py:181 +#: paasng/accessories/log/serializers.py:180 msgid "日志采集路径必须是绝对路径" msgstr "Log collection path must be an absolute path" -#: paasng/accessories/log/views/config.py:162 +#: paasng/accessories/log/views/config.py:161 msgid "内置采集规则只能停用, 不能删除" msgstr "" -#: paasng/accessories/log/views/config.py:176 +#: paasng/accessories/log/views/config.py:175 msgid "平台内置日志采集规则" msgstr "" -#: paasng/accessories/log/views/logs.py:69 +#: paasng/accessories/log/views/logs.py:68 msgid "无可用日志索引, 请稍后重试" msgstr " Logging failed, please try again later" -#: paasng/accessories/log/views/logs.py:81 +#: paasng/accessories/log/views/logs.py:80 #, fuzzy, python-brace-format #| msgid "日志查询失败,请稍后重试" msgid "日志平台接口返回异常<{message}>, 请稍后重试" msgstr " Logging failed, please try again later" -#: paasng/accessories/log/views/logs.py:223 -#: paasng/accessories/log/views/logs.py:269 +#: paasng/accessories/log/views/logs.py:225 +#: paasng/accessories/log/views/logs.py:271 msgid "日志查询失败,请稍后再试。" msgstr " Logging failed, please try again later." -#: paasng/accessories/log/views/logs.py:264 +#: paasng/accessories/log/views/logs.py:266 msgid "日志查询快照失效, 请刷新后重试。" msgstr "The Logging snapshot has failed, please refresh and try again." -#: paasng/accessories/paas_analysis/services.py:71 +#: paasng/accessories/paas_analysis/services.py:70 msgid "目前仅支持以 default 命名的自定义站点" msgstr "Currently only custom sites named default are supported" -#: paasng/accessories/paas_analysis/views.py:62 +#: paasng/accessories/paas_analysis/views.py:61 msgid "paas-analysis service is not configured" msgstr "" -#: paasng/accessories/paas_analysis/views.py:426 +#: paasng/accessories/paas_analysis/views.py:425 msgid "暂不允许关闭日志统计功能" msgstr "It is temporarily not allowed to turn off the log statistics function" -#: paasng/accessories/publish/entrance/serializers.py:33 +#: paasng/accessories/publish/entrance/serializers.py:32 msgid "类型错误,只允许修改为子域名类型" msgstr "Type error, only allowed to change to sub-domain type" -#: paasng/accessories/publish/entrance/views.py:61 +#: paasng/accessories/publish/entrance/views.py:60 msgid "当前模块访问地址已经是子域名类型,无需修改" msgstr "" "The current module access address is already a sub-domain type, no need to " "change it" -#: paasng/accessories/publish/entrance/views.py:194 +#: paasng/accessories/publish/entrance/views.py:193 msgid "不支持切换至该域名" msgstr "Switching to this domain is not supported" -#: paasng/accessories/publish/market/constant.py:78 +#: paasng/accessories/publish/market/constant.py:76 msgid "运维工具" msgstr "OpsTools" -#: paasng/accessories/publish/market/constant.py:79 +#: paasng/accessories/publish/market/constant.py:77 msgid "监控告警" msgstr "MonitorAlarm" -#: paasng/accessories/publish/market/constant.py:80 +#: paasng/accessories/publish/market/constant.py:78 msgid "配置管理" msgstr "ConfManage" -#: paasng/accessories/publish/market/constant.py:81 +#: paasng/accessories/publish/market/constant.py:79 msgid "开发工具" msgstr "DevTools" -#: paasng/accessories/publish/market/constant.py:82 +#: paasng/accessories/publish/market/constant.py:80 msgid "企业IT" msgstr "EnterpriseIT" -#: paasng/accessories/publish/market/constant.py:83 +#: paasng/accessories/publish/market/constant.py:81 msgid "办公应用" msgstr "OfficeApp" -#: paasng/accessories/publish/market/constant.py:84 +#: paasng/accessories/publish/market/constant.py:82 msgid "其它" msgstr "Other" -#: paasng/accessories/publish/market/protections.py:48 -#: paasng/platform/engine/constants.py:134 -#: paasng/platform/engine/workflow/protections.py:69 +#: paasng/accessories/publish/market/protections.py:47 +#: paasng/platform/engine/constants.py:133 +#: paasng/platform/engine/workflow/protections.py:68 msgid "未完善应用基本信息" msgstr "Incomplete app basic information" -#: paasng/accessories/publish/market/protections.py:66 +#: paasng/accessories/publish/market/protections.py:65 msgid "应用未在生产环境成功部署" msgstr "APP not successfully deployed in prod env" -#: paasng/accessories/publish/market/protections.py:79 +#: paasng/accessories/publish/market/protections.py:78 msgid "未设置合法的第三方地址" msgstr "No legitimate third party address set" -#: paasng/accessories/publish/market/protections.py:81 +#: paasng/accessories/publish/market/protections.py:80 msgid "未设置有效的访问地址" msgstr "No valid access address set" -#: paasng/accessories/publish/market/protections.py:112 +#: paasng/accessories/publish/market/protections.py:111 msgid "模块未在生产环境成功部署" msgstr "Module not successfully deployed in prod env" -#: paasng/accessories/publish/market/serializers.py:44 +#: paasng/accessories/publish/market/serializers.py:43 msgid "文件太大, 大小不能超过2M" msgstr "File size too large, no more than 2M" -#: paasng/accessories/publish/market/serializers.py:47 +#: paasng/accessories/publish/market/serializers.py:46 msgid "文件名格式非法" msgstr "Illegal file name format" -#: paasng/accessories/publish/market/serializers.py:250 +#: paasng/accessories/publish/market/serializers.py:249 msgid "不支持的操作类型" msgstr "Types of operations not supported" -#: paasng/accessories/publish/market/serializers.py:338 -#: paasng/accessories/publish/market/serializers.py:457 +#: paasng/accessories/publish/market/serializers.py:337 +#: paasng/accessories/publish/market/serializers.py:456 #, python-brace-format msgid "{url} 并非 {module_name} 模块的访问入口" msgstr "{url} is not an access entry for the {module_name} module" -#: paasng/accessories/publish/market/serializers.py:443 -#: paasng/platform/modules/serializers.py:307 +#: paasng/accessories/publish/market/serializers.py:442 +#: paasng/platform/modules/serializers.py:310 msgid "This field is required." msgstr "" -#: paasng/accessories/publish/market/serializers.py:449 +#: paasng/accessories/publish/market/serializers.py:448 #, python-brace-format msgid "{module_name} 模块不存在" msgstr "Module {module_name} does not exist" @@ -711,349 +720,379 @@ msgstr "" "Binding instance exception: unable to provision instance for " "services<{service_obj_name}>" -#: paasng/accessories/servicehub/views.py:596 +#: paasng/accessories/servicehub/views.py:136 +msgid "当前配置规格不可用" +msgstr "" + +#: paasng/accessories/servicehub/views.py:614 #, python-brace-format msgid "模块 {ref_module_name} 不存在" msgstr "Module {ref_module_name} does not exist" -#: paasng/accessories/servicehub/views.py:604 +#: paasng/accessories/servicehub/views.py:622 msgid "未知错误" msgstr "Unknown error" -#: paasng/accessories/servicehub/views.py:607 +#: paasng/accessories/servicehub/views.py:625 #, python-brace-format msgid "模块 {ref_module_name} 无法被共享" msgstr "Module {ref_module_name} cannot be shared" -#: paasng/accessories/servicehub/views.py:610 +#: paasng/accessories/servicehub/views.py:628 msgid "不能重复共享" msgstr "Cannot be shared repeatedly" -#: paasng/accessories/services/providers/base.py:73 +#: paasng/accessories/services/providers/base.py:72 msgid "资源不足, 配置资源实例失败." msgstr "Insufficient resources, failed to configure resource instance." -#: paasng/accessories/services/providers/sentry/provider.py:39 +#: paasng/accessories/services/providers/sentry/provider.py:38 msgid "Sentry 通用申请服务" msgstr "Sentry Common Application Service" -#: paasng/accessories/smart_advisor/utils.py:50 +#: paasng/accessories/smart_advisor/utils.py:49 msgid "日志查询" msgstr "Query log" -#: paasng/accessories/smart_advisor/utils.py:53 +#: paasng/accessories/smart_advisor/utils.py:52 msgid "去 FAQ 查询试试" msgstr " FAQ" -#: paasng/accessories/smart_advisor/utils.py:60 +#: paasng/accessories/smart_advisor/utils.py:59 msgid "暂时无法找到解决方案,请前往“标准输出日志”检查是否有异常" msgstr "Temporarily unable to find a solution, you can try:" -#: paasng/accessories/smart_advisor/utils.py:81 +#: paasng/accessories/smart_advisor/utils.py:80 msgid "已找到解决方案" msgstr "Solution found" -#: paasng/bk_plugins/bk_plugins/pluginscenter_views.py:226 -#: paasng/platform/engine/views/deploy.py:217 +#: paasng/bk_plugins/bk_plugins/pluginscenter_views.py:225 +#: paasng/platform/engine/views/deploy.py:214 msgid "部署请求异常,请稍候再试" msgstr "Deployment request exception, please try again later" -#: paasng/bk_plugins/bk_plugins/tasks.py:52 -#: paasng/platform/engine/views/misc.py:101 +#: paasng/bk_plugins/bk_plugins/tasks.py:51 +#: paasng/platform/engine/views/misc.py:100 msgid "存在正在进行的下架任务,请勿重复操作" msgstr "" "There are ongoing downgrading tasks, please do not repeat the operation" -#: paasng/bk_plugins/pluginscenter/constants.py:135 +#: paasng/bk_plugins/pluginscenter/constants.py:141 msgid "创建" msgstr "Create " -#: paasng/bk_plugins/pluginscenter/constants.py:136 +#: paasng/bk_plugins/pluginscenter/constants.py:142 msgid "新建" msgstr "Create" -#: paasng/bk_plugins/pluginscenter/constants.py:137 +#: paasng/bk_plugins/pluginscenter/constants.py:143 msgid "重新发布" msgstr "Republish" -#: paasng/bk_plugins/pluginscenter/constants.py:138 +#: paasng/bk_plugins/pluginscenter/constants.py:144 msgid "终止发布" msgstr "Unpublish" -#: paasng/bk_plugins/pluginscenter/constants.py:139 +#: paasng/bk_plugins/pluginscenter/constants.py:145 msgid "修改" msgstr "Modify" -#: paasng/bk_plugins/pluginscenter/constants.py:140 +#: paasng/bk_plugins/pluginscenter/constants.py:146 #, fuzzy #| msgid "删除应用" msgid "删除" msgstr "Delete APP" -#: paasng/bk_plugins/pluginscenter/constants.py:141 +#: paasng/bk_plugins/pluginscenter/constants.py:147 #, fuzzy #| msgid "已下架" msgid "下架" msgstr "Archived" -#: paasng/bk_plugins/pluginscenter/constants.py:142 +#: paasng/bk_plugins/pluginscenter/constants.py:148 msgid "重新上架" msgstr "" -#: paasng/bk_plugins/pluginscenter/constants.py:148 +#: paasng/bk_plugins/pluginscenter/constants.py:154 msgid "插件" msgstr "Plugin" -#: paasng/bk_plugins/pluginscenter/constants.py:149 +#: paasng/bk_plugins/pluginscenter/constants.py:155 msgid "测试版本" msgstr "" -#: paasng/bk_plugins/pluginscenter/constants.py:150 +#: paasng/bk_plugins/pluginscenter/constants.py:156 msgid "版本" msgstr "Version" -#: paasng/bk_plugins/pluginscenter/constants.py:151 +#: paasng/bk_plugins/pluginscenter/constants.py:157 #, fuzzy #| msgid "同步应用基本信息" msgid "基本信息" msgstr "Basic information about the Sync APP" -#: paasng/bk_plugins/pluginscenter/constants.py:152 +#: paasng/bk_plugins/pluginscenter/constants.py:158 msgid "logo" msgstr "logo" -#: paasng/bk_plugins/pluginscenter/constants.py:153 +#: paasng/bk_plugins/pluginscenter/constants.py:159 #, fuzzy #| msgid "同步应用市场信息" msgid "市场信息" msgstr "Synchronise Market information" -#: paasng/bk_plugins/pluginscenter/constants.py:154 +#: paasng/bk_plugins/pluginscenter/constants.py:160 msgid "配置信息" msgstr "config info" -#: paasng/bk_plugins/pluginscenter/constants.py:155 +#: paasng/bk_plugins/pluginscenter/constants.py:161 msgid "可见范围" msgstr "visible range" -#: paasng/bk_plugins/pluginscenter/constants.py:161 +#: paasng/bk_plugins/pluginscenter/constants.py:162 +#, fuzzy +#| msgid "预发布" +msgid "发布者" +msgstr "stag env" + +#: paasng/bk_plugins/pluginscenter/constants.py:168 msgid "正式发布" msgstr "" -#: paasng/bk_plugins/pluginscenter/constants.py:162 +#: paasng/bk_plugins/pluginscenter/constants.py:169 msgid "测试发布" msgstr "" -#: paasng/bk_plugins/pluginscenter/constants.py:168 +#: paasng/bk_plugins/pluginscenter/constants.py:175 msgid "灰度发布" msgstr "" -#: paasng/bk_plugins/pluginscenter/constants.py:169 +#: paasng/bk_plugins/pluginscenter/constants.py:176 msgid "全量发布" msgstr "" -#: paasng/bk_plugins/pluginscenter/exceptions.py:24 +#: paasng/bk_plugins/pluginscenter/constants.py:182 +msgid "后台 API 轮询" +msgstr "" + +#: paasng/bk_plugins/pluginscenter/constants.py:183 +msgid "前端轮询,如通过 Iframe message 通信等" +msgstr "" + +#: paasng/bk_plugins/pluginscenter/exceptions.py:23 msgid "创建插件项目(源码)失败, 请联系管理员" msgstr "Failed to create plug project, please contact the administrator" -#: paasng/bk_plugins/pluginscenter/exceptions.py:25 +#: paasng/bk_plugins/pluginscenter/exceptions.py:24 msgid "初始化项目代码失败, 请联系管理员" msgstr "Failed to initialize project code, please contact administrator" -#: paasng/bk_plugins/pluginscenter/exceptions.py:26 +#: paasng/bk_plugins/pluginscenter/exceptions.py:25 #, fuzzy #| msgid "未知原因, 请联系管理员处理" msgid "插件后台系统异常, 请联系管理员" msgstr "No known reason, please contact the administrator" -#: paasng/bk_plugins/pluginscenter/exceptions.py:27 +#: paasng/bk_plugins/pluginscenter/exceptions.py:26 msgid "删除插件项目(源码)失败, 请联系管理员" msgstr "Failed to delete plug project, please contact the administrator" -#: paasng/bk_plugins/pluginscenter/exceptions.py:29 +#: paasng/bk_plugins/pluginscenter/exceptions.py:28 msgid "该代码分支/Tag 已经发布过,不能重复发布" msgstr "" -#: paasng/bk_plugins/pluginscenter/exceptions.py:30 +#: paasng/bk_plugins/pluginscenter/exceptions.py:29 msgid "该代码分支/Tag 正在发布,不能重复发布" msgstr "" -#: paasng/bk_plugins/pluginscenter/exceptions.py:31 +#: paasng/bk_plugins/pluginscenter/exceptions.py:30 #, fuzzy #| msgid "部署失败,已有部署任务进行中,请刷新查看" msgid "已有发布任务进行中,请刷新查看" msgstr "" "Deployment failed, existing deployment in progress, please refresh to see" -#: paasng/bk_plugins/pluginscenter/exceptions.py:32 +#: paasng/bk_plugins/pluginscenter/exceptions.py:31 msgid "重试步骤失败, 当前步骤不支持重试。" msgstr "The retry step failed, the current step does not support retrying." -#: paasng/bk_plugins/pluginscenter/exceptions.py:33 +#: paasng/bk_plugins/pluginscenter/exceptions.py:32 msgid "无法退回至上一步" msgstr "Can't go back to previous step" -#: paasng/bk_plugins/pluginscenter/exceptions.py:34 +#: paasng/bk_plugins/pluginscenter/exceptions.py:33 msgid "无法停止发布" msgstr "Can't stop publish" -#: paasng/bk_plugins/pluginscenter/exceptions.py:35 -#: paasng/bk_plugins/pluginscenter/views.py:629 +#: paasng/bk_plugins/pluginscenter/exceptions.py:34 +#: paasng/bk_plugins/pluginscenter/views.py:668 msgid "插件不支持终止发布操作" msgstr "Plugin does not support abort publish operation" -#: paasng/bk_plugins/pluginscenter/exceptions.py:36 +#: paasng/bk_plugins/pluginscenter/exceptions.py:35 msgid "无法重新发布该版本" msgstr "Unable to republish this version" -#: paasng/bk_plugins/pluginscenter/exceptions.py:37 +#: paasng/bk_plugins/pluginscenter/exceptions.py:36 msgid "发布步骤执行失败" msgstr "Publish step execution failed" -#: paasng/bk_plugins/pluginscenter/exceptions.py:38 +#: paasng/bk_plugins/pluginscenter/exceptions.py:37 msgid "当前步骤在新的发布流程中被移除, 请重新发起部署流程或联系插件管理员" msgstr "" "The current step is removed in the new release process, please re-initiate " "the deployment process or contact the plugin administrator" -#: paasng/bk_plugins/pluginscenter/exceptions.py:39 +#: paasng/bk_plugins/pluginscenter/exceptions.py:38 #, python-brace-format msgid "该插件 {conflict_fields} 的配置项已存在, 不能重复添加" msgstr "" "The configuration item of the plugin {conflict_fields} already exists and " "cannot be added repeatedly" -#: paasng/bk_plugins/pluginscenter/exceptions.py:40 +#: paasng/bk_plugins/pluginscenter/exceptions.py:39 msgid "查询步骤详情失败" msgstr "Failed to query step details" -#: paasng/bk_plugins/pluginscenter/exceptions.py:41 +#: paasng/bk_plugins/pluginscenter/exceptions.py:40 msgid "插件不支持重新上架" msgstr "Plugin does not support abort publish operation" -#: paasng/bk_plugins/pluginscenter/exceptions.py:42 +#: paasng/bk_plugins/pluginscenter/exceptions.py:41 msgid "下架失败" msgstr "Archive Failed" -#: paasng/bk_plugins/pluginscenter/exceptions.py:43 +#: paasng/bk_plugins/pluginscenter/exceptions.py:42 msgid "重新上架失败" msgstr "Republish failed" -#: paasng/bk_plugins/pluginscenter/exceptions.py:46 +#: paasng/bk_plugins/pluginscenter/exceptions.py:45 msgid "插件应该至少拥有一个管理员" msgstr "The plugin should have at least one administrator" -#: paasng/bk_plugins/pluginscenter/exceptions.py:47 +#: paasng/bk_plugins/pluginscenter/exceptions.py:46 msgid "添加插件成员失败" msgstr "Failed to add plugin member" -#: paasng/bk_plugins/pluginscenter/exceptions.py:48 +#: paasng/bk_plugins/pluginscenter/exceptions.py:47 msgid "修改插件成员角色失败" msgstr "Failed to modify plugin member role" -#: paasng/bk_plugins/pluginscenter/exceptions.py:50 +#: paasng/bk_plugins/pluginscenter/exceptions.py:49 msgid "不允许删除" msgstr "Not allowed to delete" -#: paasng/bk_plugins/pluginscenter/exceptions.py:51 +#: paasng/bk_plugins/pluginscenter/exceptions.py:50 msgid "插件已下架, 无法进行该操作" msgstr "The plug-in has been removed, and this operation cannot be performed" -#: paasng/bk_plugins/pluginscenter/exceptions.py:53 +#: paasng/bk_plugins/pluginscenter/exceptions.py:52 msgid "添加/删除仓库成员异常, 请稍后重试" msgstr "Add/delete repository member exception, please try again later" -#: paasng/bk_plugins/pluginscenter/exceptions.py:55 +#: paasng/bk_plugins/pluginscenter/exceptions.py:54 msgid "查询代码仓库概览数据异常" msgstr "Query code warehouse overview data exception" -#: paasng/bk_plugins/pluginscenter/exceptions.py:57 +#: paasng/bk_plugins/pluginscenter/exceptions.py:56 #, fuzzy #| msgid "日志查询失败,请稍后重试" msgid "日志系统异常, 请稍后重试" msgstr " Logging failed, please try again later" -#: paasng/bk_plugins/pluginscenter/exceptions.py:69 -#: paasng/utils/error_codes.py:193 +#: paasng/bk_plugins/pluginscenter/exceptions.py:59 +#, fuzzy +#| msgid "可见范围" +msgid "可见范围修改失败" +msgstr "visible range" + +#: paasng/bk_plugins/pluginscenter/exceptions.py:71 +#: paasng/utils/error_codes.py:197 msgid "| 错误码 | 描述 |" msgstr "| Error Code | Description |" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:48 -#: paasng/infras/iam/permissions/resources/application.py:56 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:47 +#: paasng/infras/iam/permissions/resources/application.py:55 msgid "基础开发" msgstr "Basic development" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:49 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:48 msgid "版本发布" msgstr "version release" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:50 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:49 msgid "编辑插件信息" msgstr "Edit plugin info" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:51 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:50 msgid "删除插件" msgstr "archive plugin" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:52 -#: paasng/infras/iam/permissions/resources/application.py:48 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:51 +#: paasng/infras/iam/permissions/resources/application.py:47 msgid "成员管理" msgstr "Member management" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:53 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:52 msgid "可见范围管理" msgstr "visibility range manage" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:54 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:53 msgid "插件配置管理" msgstr "ConfManage" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:78 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/constants.py:77 msgid "蓝鲸插件" msgstr "BK plugin" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:73 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:72 #, python-brace-format msgid "" "{pd_name}({resource_name})分级管理员,拥有审批用户加入管理者/开发者用户组权" "限。" msgstr "" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:109 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:108 #, python-brace-format msgid "{pd_name}-{plugin_name}-管理者" msgstr "" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:111 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:110 #, python-brace-format msgid "{pd_name}-{plugin_name}-开发者" msgstr "" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:118 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:117 #, python-brace-format msgid "{pd_name}({plugin_name})管理者,拥有应用的全部权限。" msgstr "" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:122 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/definitions.py:121 #, python-brace-format msgid "" "{pd_name}({plugin_name})开发者,拥有应用的开发权限,如基础开发,版本发布" "等。" msgstr "" -#: paasng/bk_plugins/pluginscenter/iam_adaptor/policy/permissions.py:36 +#: paasng/bk_plugins/pluginscenter/iam_adaptor/policy/permissions.py:35 #, python-brace-format msgid "用户无以下权限 {actions}" msgstr "" -#: paasng/bk_plugins/pluginscenter/itsm_adaptor/constants.py:26 +#: paasng/bk_plugins/pluginscenter/itsm_adaptor/constants.py:25 msgid "插件上线审批" msgstr "Plugin online approval" -#: paasng/bk_plugins/pluginscenter/itsm_adaptor/constants.py:27 +#: paasng/bk_plugins/pluginscenter/itsm_adaptor/constants.py:26 msgid "插件创建审批流程" msgstr "Plugin Creation Approval Process" +#: paasng/bk_plugins/pluginscenter/itsm_adaptor/constants.py:27 +#, fuzzy +#| msgid "插件创建审批流程" +msgid "插件可见范围修改审批流程" +msgstr "Plugin Creation Approval Process" + #: paasng/bk_plugins/pluginscenter/itsm_adaptor/constants.py:33 msgid "处理中" msgstr "RUNNING" @@ -1074,87 +1113,87 @@ msgstr "TERMINATED" msgid "被撤销" msgstr "REVOKED" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:44 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:43 msgid "同步版本信息失败, 不能新建版本" msgstr "Failed to sync version information, cannot create new version" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:54 -#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:124 -#: tests/paasng/bk_plugins/pluginscenter/test_integration.py:153 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:53 +#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:123 +#: tests/paasng/bk_plugins/pluginscenter/test_integration.py:152 msgid "当前阶段未执行成功, 不允许进入下一阶段" msgstr "" "The current stage has not been executed successfully, and it is not allowed " "to enter the next stage" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:58 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:57 msgid "不存在下一阶段" msgstr "no next stage" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:61 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:60 msgid "下一阶段已被执行, 不能重复触发已执行的阶段" msgstr "" "The next stage has already been executed, and the executed stage cannot be " "triggered repeatedly" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:76 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:75 msgid "如需发布请创建新的版本" msgstr "To publish please create a new version" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:88 -#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:169 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:87 +#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:168 msgid "当前阶段已被执行, 不能重复触发已执行的阶段" msgstr "" "The current phase has been executed, and the executed phase cannot be " "triggered repeatedly" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:94 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:93 msgid "当前步骤前置命令执行异常" msgstr "Abnormal execution of the pre-command for the current step" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:120 -#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:194 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:119 +#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:193 msgid "当前发布流程已结束" msgstr "The current publishing process has ended" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:124 -#: paasng/bk_plugins/pluginscenter/releases/executor.py:159 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:123 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:158 msgid "当前插件类型不支持重置历史版本, 如需发布请创建新的版本" msgstr "" "The current plug-in type does not support resetting the historical version, " "please create a new version if you need to publish" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:132 -#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:205 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:131 +#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:204 msgid "请先撤回审批单据, 再返回上一步" msgstr "" "Please withdraw the approval document before returning to the previous step" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:137 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:136 msgid "请等待部署完成, 再返回上一步" msgstr "" "Please wait for the deployment to complete before returning to the previous " "step" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:156 -#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:233 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:155 +#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:232 msgid "状态异常: {}" msgstr "Abnormal state: {}" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:167 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:166 msgid "当前状态({})不支持取消发布" msgstr "The current state ({}) does not support unpublishing" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:174 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:173 msgid "请到 ITSM 撤回审批单据" msgstr "Please go to ITSM to withdraw the approval slip" -#: paasng/bk_plugins/pluginscenter/releases/executor.py:175 -#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:257 +#: paasng/bk_plugins/pluginscenter/releases/executor.py:174 +#: tests/paasng/bk_plugins/pluginscenter/release/test_executor.py:256 msgid "用户主动终止发布" msgstr "User voluntarily terminates publishing" -#: paasng/bk_plugins/pluginscenter/releases/stages.py:72 -#: paasng/bk_plugins/pluginscenter/releases/stages.py:98 +#: paasng/bk_plugins/pluginscenter/releases/stages.py:71 +#: paasng/bk_plugins/pluginscenter/releases/stages.py:97 #: paasng/bk_plugins/pluginscenter/releases/stages.py:256 #: paasng/bk_plugins/pluginscenter/releases/stages.py:273 #: paasng/bk_plugins/pluginscenter/releases/stages.py:318 @@ -1170,38 +1209,38 @@ msgstr "The current phase is not a deployment phase" msgid "构建失败" msgstr "Build failed" -#: paasng/bk_plugins/pluginscenter/releases/stages.py:411 +#: paasng/bk_plugins/pluginscenter/releases/stages.py:416 msgid "插件已发布成功" msgstr "The plugin has been published successfully" -#: paasng/bk_plugins/pluginscenter/serializers.py:76 +#: paasng/bk_plugins/pluginscenter/serializers.py:77 msgid "context `pd` is required" msgstr "" -#: paasng/bk_plugins/pluginscenter/serializers.py:103 +#: paasng/bk_plugins/pluginscenter/serializers.py:104 #, fuzzy #| msgid "{} 为 {} 的应用已存在" msgid "{} 为 {} 的插件已存在" msgstr "{} for {} already exists" -#: paasng/bk_plugins/pluginscenter/serializers.py:106 +#: paasng/bk_plugins/pluginscenter/serializers.py:107 msgid "attrs `{}` is required" msgstr "" -#: paasng/bk_plugins/pluginscenter/serializers.py:419 +#: paasng/bk_plugins/pluginscenter/serializers.py:461 #, python-brace-format msgid "版本号不符合,下一个 {label} 版本是 {revision}" msgstr "Revision numbers do not match, next {label} revision is {revision}" -#: paasng/bk_plugins/pluginscenter/serializers.py:445 +#: paasng/bk_plugins/pluginscenter/serializers.py:487 msgid "版本号必须与代码分支一致" msgstr "The version number must match the code branch" -#: paasng/bk_plugins/pluginscenter/serializers.py:448 +#: paasng/bk_plugins/pluginscenter/serializers.py:490 msgid "版本号必须与提交哈希一致" msgstr "The version number must match the commit hash" -#: paasng/bk_plugins/pluginscenter/serializers.py:451 +#: paasng/bk_plugins/pluginscenter/serializers.py:493 #, fuzzy #| msgid "版本号必须与代码分支一致" msgid "版本号必须以代码分支开头" @@ -1221,173 +1260,183 @@ msgstr "Tc_git interface request timeout" msgid "工蜂接口请求异常" msgstr "Tc_git interface request exception" -#: paasng/bk_plugins/pluginscenter/views.py:372 +#: paasng/bk_plugins/pluginscenter/views.py:411 #, fuzzy #| msgid "插件已下架, 无法进行该操作" msgid "插件已下架,不能再执行下架操作" msgstr "The plug-in has been removed, and this operation cannot be performed" -#: paasng/bk_plugins/pluginscenter/views.py:398 +#: paasng/bk_plugins/pluginscenter/views.py:437 msgid "插件未下架,不能重新上架" msgstr "Plugin not unlisted, cannot be relisted." -#: paasng/bk_plugins/pluginscenter/views.py:733 +#: paasng/bk_plugins/pluginscenter/views.py:772 msgid "仅支持重试当前阶段" msgstr "Only supports retrying the current phase" -#: paasng/bk_plugins/pluginscenter/views.py:847 +#: paasng/bk_plugins/pluginscenter/views.py:790 +#, fuzzy +#| msgid "仅支持重试当前阶段" +msgid "仅支持更新当前阶段状态" +msgstr "Only supports retrying the current phase" + +#: paasng/bk_plugins/pluginscenter/views.py:904 msgid "用户 {} 已存在" msgstr "" -#: paasng/bk_plugins/pluginscenter/views.py:875 +#: paasng/bk_plugins/pluginscenter/views.py:932 msgid "插件成员 {} 不存在" msgstr "" -#: paasng/core/core/storages/dbrouter.py:65 +#: paasng/bk_plugins/pluginscenter/views.py:1201 +msgid "可见范围修改失败:正在审批中" +msgstr "" + +#: paasng/core/core/storages/dbrouter.py:64 msgid "检测到重命名前的 migration 记录 {}, 跳过执行当前 migration" msgstr "" -#: paasng/infras/accounts/constants.py:46 +#: paasng/infras/accounts/constants.py:45 msgid "没有特定角色的用户" msgstr "Users without specific roles" -#: paasng/infras/accounts/constants.py:47 +#: paasng/infras/accounts/constants.py:46 msgid "普通用户" msgstr "General user" -#: paasng/infras/accounts/constants.py:48 +#: paasng/infras/accounts/constants.py:47 msgid "管理员" msgstr "Admin" -#: paasng/infras/accounts/constants.py:49 +#: paasng/infras/accounts/constants.py:48 msgid "超级用户" msgstr "Administrator" -#: paasng/infras/accounts/constants.py:50 +#: paasng/infras/accounts/constants.py:49 msgid "不允许访问服务的用户" msgstr "Users not allowed access" -#: paasng/infras/accounts/constants.py:51 -#: paasng/platform/evaluation/constants.py:26 +#: paasng/infras/accounts/constants.py:50 +#: paasng/platform/evaluation/constants.py:38 msgid "平台管理员" msgstr "" -#: paasng/infras/accounts/constants.py:52 +#: paasng/infras/accounts/constants.py:51 msgid "应用模板管理员" msgstr "" -#: paasng/infras/accounts/constants.py:53 +#: paasng/infras/accounts/constants.py:52 msgid "平台运营人员" msgstr "" -#: paasng/infras/accounts/constants.py:54 +#: paasng/infras/accounts/constants.py:53 msgid "系统 API 用户:基础可读" msgstr "System API Users: Basic Readable" -#: paasng/infras/accounts/constants.py:55 +#: paasng/infras/accounts/constants.py:54 msgid "系统 API 用户:具有基本管理权限" msgstr "System API users: with basic administrative privileges" -#: paasng/infras/accounts/constants.py:56 +#: paasng/infras/accounts/constants.py:55 msgid "系统 API 用户:具有轻应用管理权限" msgstr "System API users: have mini-app management permissions" -#: paasng/infras/accounts/constants.py:57 +#: paasng/infras/accounts/constants.py:56 msgid "系统 API 用户: 具有 lesscode 权限" msgstr "System API user: has lesscode permission" -#: paasng/infras/accounts/constants.py:76 +#: paasng/infras/accounts/constants.py:75 msgid "允许创建模块时使用高级选项" msgstr "Allow advanced options when creating modules" -#: paasng/infras/accounts/constants.py:77 +#: paasng/infras/accounts/constants.py:76 msgid "允许打开控制台" msgstr "Allow to open web-console" -#: paasng/infras/accounts/constants.py:78 +#: paasng/infras/accounts/constants.py:77 msgid "允许选择源码来源" msgstr "Allow selection of source code sources" -#: paasng/infras/accounts/constants.py:79 +#: paasng/infras/accounts/constants.py:78 msgid "允许创建 SMart 应用" msgstr "Allows creation of S-mart APP" -#: paasng/infras/accounts/constants.py:80 +#: paasng/infras/accounts/constants.py:79 #, fuzzy #| msgid "允许创建 SMart 应用" msgid "允许创建云原生应用" msgstr "Allows creation of S-mart APP" -#: paasng/infras/accounts/constants.py:81 +#: paasng/infras/accounts/constants.py:80 msgid "允许使用「提供镜像」的部署方式" msgstr "Allows 'From image' deployment methods" -#: paasng/infras/accounts/constants.py:82 +#: paasng/infras/accounts/constants.py:81 msgid "允许使用插件开发者中心" msgstr "" -#: paasng/infras/accounts/constants.py:83 +#: paasng/infras/accounts/constants.py:82 #, fuzzy #| msgid "允许创建 SMart 应用" msgid "允许从源码部署云原生应用" msgstr "Allows creation of S-mart APP" -#: paasng/infras/accounts/middlewares.py:68 +#: paasng/infras/accounts/middlewares.py:67 msgid "产品灰度测试中,尚未开放,敬请期待" msgstr "The product is in grayscale testing, not yet open, so stay tuned" -#: paasng/infras/accounts/models.py:55 +#: paasng/infras/accounts/models.py:54 msgid "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" -#: paasng/infras/accounts/models.py:57 +#: paasng/infras/accounts/models.py:56 msgid "A user with that username already exists." msgstr "" -#: paasng/infras/accounts/models.py:59 +#: paasng/infras/accounts/models.py:58 msgid "first name" msgstr "" -#: paasng/infras/accounts/models.py:60 +#: paasng/infras/accounts/models.py:59 msgid "last name" msgstr "" -#: paasng/infras/accounts/models.py:61 +#: paasng/infras/accounts/models.py:60 msgid "email address" msgstr "" -#: paasng/infras/accounts/models.py:63 +#: paasng/infras/accounts/models.py:62 msgid "staff status" msgstr "" -#: paasng/infras/accounts/models.py:63 +#: paasng/infras/accounts/models.py:62 msgid "Designates whether the user can log into this admin site." msgstr "" -#: paasng/infras/accounts/models.py:66 +#: paasng/infras/accounts/models.py:65 msgid "active" msgstr "" -#: paasng/infras/accounts/models.py:69 +#: paasng/infras/accounts/models.py:68 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "" -#: paasng/infras/accounts/models.py:72 +#: paasng/infras/accounts/models.py:71 msgid "date joined" msgstr "" -#: paasng/infras/accounts/models.py:81 +#: paasng/infras/accounts/models.py:80 msgid "user" msgstr "" -#: paasng/infras/accounts/models.py:82 +#: paasng/infras/accounts/models.py:81 msgid "users" msgstr "" #: paasng/infras/accounts/oauth/backends_ext.py:15 -#: paasng/platform/sourcectl/type_specs.py:142 +#: paasng/platform/sourcectl/type_specs.py:141 msgid "工蜂 Git" msgstr "Tc_git" @@ -1395,183 +1444,201 @@ msgstr "Tc_git" msgid "腾讯内部 Git 源码托管系统" msgstr "Tencent's internal Git source code hosting system" -#: paasng/infras/accounts/permissions/constants.py:26 +#: paasng/infras/accounts/permissions/constants.py:25 msgid "平台页面查看" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:28 +#: paasng/infras/accounts/permissions/constants.py:27 msgid "访问后台管理" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:31 +#: paasng/infras/accounts/permissions/constants.py:30 msgid "系统 API:读取应用信息" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:33 +#: paasng/infras/accounts/permissions/constants.py:32 #, fuzzy #| msgid "系统 API 用户:具有轻应用管理权限" msgid "系统 API:应用管理" msgstr "System API users: have mini-app management permissions" -#: paasng/infras/accounts/permissions/constants.py:35 +#: paasng/infras/accounts/permissions/constants.py:34 msgid "系统 API:读取服务信息" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:37 +#: paasng/infras/accounts/permissions/constants.py:36 #, fuzzy #| msgid "系统 API 用户:具有轻应用管理权限" msgid "系统 API:轻应用管理" msgstr "System API users: have mini-app management permissions" -#: paasng/infras/accounts/permissions/constants.py:39 +#: paasng/infras/accounts/permissions/constants.py:38 msgid "系统 API:白名单访问控制" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:41 +#: paasng/infras/accounts/permissions/constants.py:40 msgid "系统 API:读取 DB 凭证信息" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:42 +#: paasng/infras/accounts/permissions/constants.py:41 msgid "系统 API:绑定 DB 服务" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:45 +#: paasng/infras/accounts/permissions/constants.py:44 msgid "平台管理" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:47 +#: paasng/infras/accounts/permissions/constants.py:46 msgid "应用模板管理" msgstr "" -#: paasng/infras/accounts/permissions/constants.py:49 +#: paasng/infras/accounts/permissions/constants.py:48 msgid "平台运营" msgstr "" -#: paasng/infras/accounts/views.py:90 +#: paasng/infras/accounts/views.py:84 paasng/infras/accounts/views.py:110 +msgid "暂不支持发送验证码" +msgstr "" + +#: paasng/infras/accounts/views.py:89 #, python-brace-format msgid "您的蓝鲸验证码是:{verification_code},请妥善保管。" msgstr "" "Your BlueKing verification code is: {verification_code}, please keep it safe." -#: paasng/infras/accounts/views.py:94 paasng/platform/sourcectl/views.py:118 +#: paasng/infras/accounts/views.py:93 paasng/platform/sourcectl/views.py:116 msgid "蓝鲸平台" msgstr "BlueKing" -#: paasng/infras/accounts/views.py:249 +#: paasng/infras/accounts/views.py:248 msgid "授权成功, 2秒后自动关闭该页面" msgstr "" "The authorization is successful, the page will be closed automatically after " "2 seconds" -#: paasng/infras/bkmonitorv3/constants.py:24 +#: paasng/infras/bk_ci/constants.py:25 +msgid "成功" +msgstr "" + +#: paasng/infras/bk_ci/constants.py:26 +#, fuzzy +#| msgid "下架失败" +msgid "失败" +msgstr "Archive Failed" + +#: paasng/infras/bk_ci/constants.py:27 +msgid "已取消" +msgstr "" + +#: paasng/infras/bkmonitorv3/constants.py:23 #, fuzzy #| msgid "蓝鲸应用ID" msgid "蓝鲸应用" msgstr "BK APP ID" -#: paasng/infras/bkmonitorv3/constants.py:25 +#: paasng/infras/bkmonitorv3/constants.py:24 msgid "业务" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:42 +#: paasng/infras/iam/permissions/resources/application.py:41 msgid "基础信息查看" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:44 +#: paasng/infras/iam/permissions/resources/application.py:43 msgid "基础信息编辑" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:46 +#: paasng/infras/iam/permissions/resources/application.py:45 #, fuzzy #| msgid "应用删除失败" msgid "应用删除" msgstr "APP deletion failed" -#: paasng/infras/iam/permissions/resources/application.py:50 +#: paasng/infras/iam/permissions/resources/application.py:49 msgid "访问控制管理" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:52 +#: paasng/infras/iam/permissions/resources/application.py:51 #, fuzzy #| msgid "应用市场" msgid "应用市场管理" msgstr " Market " -#: paasng/infras/iam/permissions/resources/application.py:54 +#: paasng/infras/iam/permissions/resources/application.py:53 msgid "数据统计" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:58 +#: paasng/infras/iam/permissions/resources/application.py:57 msgid "云 API 管理" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:60 +#: paasng/infras/iam/permissions/resources/application.py:59 msgid "告警记录查看" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:62 +#: paasng/infras/iam/permissions/resources/application.py:61 msgid "告警策略配置" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:64 +#: paasng/infras/iam/permissions/resources/application.py:63 #, fuzzy #| msgid "增强服务绑定失败" msgid "增强服务管理" msgstr "Add-ons binding failure" -#: paasng/infras/iam/permissions/resources/application.py:66 +#: paasng/infras/iam/permissions/resources/application.py:65 msgid "部署环境限制管理" msgstr "" -#: paasng/infras/iam/permissions/resources/application.py:68 +#: paasng/infras/iam/permissions/resources/application.py:67 msgid "模块管理" msgstr "" -#: paasng/infras/iam/utils.py:36 +#: paasng/infras/iam/utils.py:35 msgid "开发者中心-{}" msgstr "" -#: paasng/infras/iam/utils.py:46 +#: paasng/infras/iam/utils.py:45 msgid "" "开发者中心应用({})分级管理员,拥有审批用户加入管理者/开发者/运营者用户组权" "限。" msgstr "" -#: paasng/infras/iam/utils.py:56 +#: paasng/infras/iam/utils.py:55 msgid "开发者中心-{}-管理员" msgstr "" -#: paasng/infras/iam/utils.py:58 +#: paasng/infras/iam/utils.py:57 msgid "开发者中心-{}-开发者" msgstr "" -#: paasng/infras/iam/utils.py:60 +#: paasng/infras/iam/utils.py:59 msgid "开发者中心-{}-运营者" msgstr "" -#: paasng/infras/iam/utils.py:77 +#: paasng/infras/iam/utils.py:76 msgid "开发者中心应用({})管理员,拥有应用的全部权限。" msgstr "" -#: paasng/infras/iam/utils.py:79 +#: paasng/infras/iam/utils.py:78 msgid "" "开发者中心应用({})开发者,拥有应用的开发权限,如基础开发,云 API 管理等。" msgstr "" -#: paasng/infras/iam/utils.py:82 +#: paasng/infras/iam/utils.py:81 msgid "" "开发者中心应用({})运营者,拥有应用的运营权限,如基础信息编辑,访问控制管" "理,应用市场管理等。" msgstr "" -#: paasng/misc/monitoring/healthz/probes.py:138 +#: paasng/misc/monitoring/healthz/probes.py:137 #, python-brace-format msgid "远程增强服务「{config_name}」状态异常, 请检查服务可用性。" msgstr "" "The status of the remote Add-ons '{config_name}' is abnormal, please check " "the availability of the service." -#: paasng/misc/monitoring/healthz/probes.py:147 +#: paasng/misc/monitoring/healthz/probes.py:146 #, python-brace-format msgid "探测远程增强服务「{config_name}」时发生未知异常, 请检查配置情况。" msgstr "" @@ -1598,512 +1665,525 @@ msgstr "" msgid "队列消息数过多" msgstr "" -#: paasng/misc/operations/constant.py:58 +#: paasng/misc/monitoring/monitor/alert_rules/config/constants.py:58 +msgid "BKREPO 存储使用量过高" +msgstr "" + +#: paasng/misc/monitoring/monitor/alert_rules/config/constants.py:63 +msgid "GCS-MySQL 慢查询新增" +msgstr "" + +#: paasng/misc/operations/constant.py:57 msgid "创建应用" msgstr "create APP" -#: paasng/misc/operations/constant.py:59 +#: paasng/misc/operations/constant.py:58 msgid "部署预发布环境" msgstr "deploy stag env" -#: paasng/misc/operations/constant.py:60 +#: paasng/misc/operations/constant.py:59 msgid "部署生产环境" msgstr "deploy prod env" -#: paasng/misc/operations/constant.py:61 +#: paasng/misc/operations/constant.py:60 msgid "上线并注册到蓝鲸市场" msgstr "online and register to market" -#: paasng/misc/operations/constant.py:62 +#: paasng/misc/operations/constant.py:61 msgid "完善应用市场配置" msgstr "improve market configuration" -#: paasng/misc/operations/constant.py:63 +#: paasng/misc/operations/constant.py:62 msgid "下线应用服务" msgstr "archive APP" -#: paasng/misc/operations/constant.py:64 +#: paasng/misc/operations/constant.py:63 msgid "删除应用" msgstr "delete APP" -#: paasng/misc/operations/constant.py:65 +#: paasng/misc/operations/constant.py:64 msgid "从应用市场下架" msgstr " remove from the APP market " -#: paasng/misc/operations/constant.py:66 +#: paasng/misc/operations/constant.py:65 msgid "发布至应用市场" msgstr " publish to APP market" -#: paasng/misc/operations/constant.py:67 +#: paasng/misc/operations/constant.py:66 msgid "下线预发布环境" msgstr "archiving stag env" -#: paasng/misc/operations/constant.py:68 +#: paasng/misc/operations/constant.py:67 msgid "下线生产环境" msgstr "archiving prod env" -#: paasng/misc/operations/constant.py:69 +#: paasng/misc/operations/constant.py:68 msgid "下线生产环境及蓝鲸市场" msgstr "archiving prod env and removed from market" -#: paasng/misc/operations/constant.py:70 +#: paasng/misc/operations/constant.py:69 msgid "创建模块" msgstr "create a module" -#: paasng/misc/operations/constant.py:71 +#: paasng/misc/operations/constant.py:70 msgid "删除模块" msgstr "delete module" -#: paasng/misc/operations/constant.py:72 +#: paasng/misc/operations/constant.py:71 msgid "申请网关 API 权限" msgstr "Apply for Gateway API permissions" -#: paasng/misc/operations/constant.py:73 +#: paasng/misc/operations/constant.py:72 msgid "续期网关 API 权限" msgstr "Renewal Gateway API Permissions" -#: paasng/misc/operations/constant.py:74 +#: paasng/misc/operations/constant.py:73 msgid "开启用户访问限制" msgstr "enable user access restrictions" -#: paasng/misc/operations/constant.py:75 +#: paasng/misc/operations/constant.py:74 msgid "关闭用户访问限制" msgstr "disable user access restrictions" -#: paasng/misc/operations/models.py:101 +#: paasng/misc/operations/models.py:100 msgid "未知操作类型" msgstr "Unknown operation type" -#: paasng/misc/operations/models.py:108 +#: paasng/misc/operations/models.py:107 #, python-brace-format msgid "启动 {module_name} 模块的 {process_type} 进程" msgstr "start {module_name} module's {process_type} process" -#: paasng/misc/operations/models.py:109 +#: paasng/misc/operations/models.py:108 #, python-brace-format msgid "停止 {module_name} 模块的 {process_type} 进程" msgstr "stop {module_name} module's {process_type} process" -#: paasng/misc/operations/models.py:173 paasng/misc/operations/models.py:217 +#: paasng/misc/operations/models.py:172 paasng/misc/operations/models.py:216 #, python-brace-format msgid "成功部署 {module_name} 模块的{env_name}" msgstr "successfully deployed {module_name} module's {env_name}" -#: paasng/misc/operations/models.py:175 +#: paasng/misc/operations/models.py:174 #, python-brace-format msgid "中断了 {module_name} 模块的{env_name}的部署过程" msgstr "Interrupted deploy of {module_name} module's {env_name}" -#: paasng/misc/operations/models.py:177 paasng/misc/operations/models.py:219 +#: paasng/misc/operations/models.py:176 paasng/misc/operations/models.py:218 #, python-brace-format msgid "尝试部署 {module_name} 模块的{env_name}失败" msgstr "Failed to deploy {module_name} module's {env_name}" -#: paasng/misc/operations/models.py:275 +#: paasng/misc/operations/models.py:274 #, python-brace-format msgid "成功下架 {module_name} 模块的{env_name}" msgstr "Successfully archived {env_name} from {module_name} module" -#: paasng/misc/operations/models.py:277 +#: paasng/misc/operations/models.py:276 #, python-brace-format msgid "尝试下架 {module_name} 模块的{env_name}" msgstr "Try to archive {env_name} from {module_name} module" -#: paasng/misc/operations/models.py:286 +#: paasng/misc/operations/models.py:285 #, python-brace-format msgid "创建 {module_name} 模块" msgstr "Create {module_name} module" -#: paasng/misc/operations/models.py:293 +#: paasng/misc/operations/models.py:292 #, python-brace-format msgid "申请 {gateway_name} 网关的 API 权限" msgstr "" -#: paasng/misc/operations/models.py:294 +#: paasng/misc/operations/models.py:293 #, python-brace-format msgid "续期 {gateway_name} 网关的 API 权限" msgstr "" -#: paasng/plat_admin/admin42/runtime_views.py:99 +#: paasng/plat_admin/admin42/runtime_views.py:98 #, python-format msgid "创建失败: %s" msgstr "Failed to create: %s" -#: paasng/plat_admin/admin42/runtime_views.py:149 +#: paasng/plat_admin/admin42/runtime_views.py:148 #, python-format msgid "更新失败: %s" msgstr "Update failed: %s" -#: paasng/plat_admin/admin42/runtime_views.py:184 +#: paasng/plat_admin/admin42/runtime_views.py:183 #, python-format msgid "删除失败: %s" msgstr "Failed to delete: %s" -#: paasng/plat_admin/admin42/serializers/config_vars.py:33 -#: paasng/utils/serializers.py:265 +#: paasng/plat_admin/admin42/serializers/config_vars.py:32 +#: paasng/utils/serializers.py:264 msgid "格式错误,只能以大写字母开头,由大写字母、数字与下划线组成。" msgstr "" "incorrect format, can only start with an uppercase letter, and consist of " "uppercase letters, numbers, and underscores." -#: paasng/plat_admin/admin42/serializers/egress.py:26 +#: paasng/plat_admin/admin42/serializers/egress.py:25 msgid "IP/域名" msgstr "" -#: paasng/plat_admin/admin42/serializers/egress.py:27 +#: paasng/plat_admin/admin42/serializers/egress.py:26 msgid "端口" msgstr "" -#: paasng/plat_admin/admin42/serializers/egress.py:28 +#: paasng/plat_admin/admin42/serializers/egress.py:27 msgid "协议" msgstr "" -#: paasng/plat_admin/admin42/serializers/egress.py:32 +#: paasng/plat_admin/admin42/serializers/egress.py:31 msgid "副本数量" msgstr "" -#: paasng/plat_admin/admin42/serializers/egress.py:33 +#: paasng/plat_admin/admin42/serializers/egress.py:32 msgid "CPU 限制" msgstr "" -#: paasng/plat_admin/admin42/serializers/egress.py:34 +#: paasng/plat_admin/admin42/serializers/egress.py:33 msgid "内存限制" msgstr "" -#: paasng/plat_admin/admin42/serializers/egress.py:35 +#: paasng/plat_admin/admin42/serializers/egress.py:34 #, fuzzy #| msgid "匹配规则" msgid "规则" msgstr "match rules" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:36 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:35 msgid "服务配置格式必须为 Dict" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:57 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:56 msgid "配置类路径有误,导入失败" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:62 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:61 msgid "初始化 SourceTypeSpec 失败:{}" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:69 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:68 msgid "OAuth 授权链接" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:72 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:71 msgid "回调地址" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:73 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:72 msgid "获取 Token 链接" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:74 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:73 msgid "OAuth 展示信息(英)" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:75 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:74 msgid "OAuth 展示信息(中)" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:79 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:78 msgid "使用配置类 {} 时,字段 {} 不可为空" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:86 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:85 msgid "展示信息格式必须为 Dict" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:90 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:89 msgid "展示信息有误,非空则必须包含 name,description 键" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:94 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:93 msgid "展示信息不支持字段 {}" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:101 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:100 msgid "OAuth 展示信息格式必须为 Dict" msgstr "" -#: paasng/plat_admin/admin42/serializers/sourcectl.py:105 +#: paasng/plat_admin/admin42/serializers/sourcectl.py:104 msgid "OAuth 展示信息不支持字段 {}" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:36 +#: paasng/plat_admin/admin42/serializers/templates.py:35 msgid "预设增强服务配置必须为 Dict 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:42 +#: paasng/plat_admin/admin42/serializers/templates.py:41 msgid "构建工具配置必须为 List[str] 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:45 +#: paasng/plat_admin/admin42/serializers/templates.py:44 msgid "针对不同镜像配置 required_buildpacks 时必须配置默认值 __default__" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:48 +#: paasng/plat_admin/admin42/serializers/templates.py:47 msgid "构建工具配置必须为 Dict[str, List[str]] 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:50 +#: paasng/plat_admin/admin42/serializers/templates.py:49 msgid "构建工具必须为 List[str] 或 Dict[str, List[str]] 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:55 +#: paasng/plat_admin/admin42/serializers/templates.py:54 msgid "进程配置必须为 Dict 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:60 +#: paasng/plat_admin/admin42/serializers/templates.py:59 msgid "标签必须为 List 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:66 +#: paasng/plat_admin/admin42/serializers/templates.py:65 msgid "允许被使用的版本必须为 List 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:70 +#: paasng/plat_admin/admin42/serializers/templates.py:69 msgid "Region {} 不受支持" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:74 +#: paasng/plat_admin/admin42/serializers/templates.py:73 msgid "二进制包存储配置必须为 Dict 格式" msgstr "" -#: paasng/plat_admin/admin42/serializers/templates.py:77 +#: paasng/plat_admin/admin42/serializers/templates.py:76 msgid "Region {} 不存在对应的二进制包存储路径" msgstr "" -#: paasng/plat_admin/admin42/utils/__init__.py:36 +#: paasng/plat_admin/admin42/utils/__init__.py:35 #, python-brace-format msgid "由于: {reason}, 该功能暂不支持" msgstr "Due to: {reason}, this feature is not supported at this time" -#: paasng/plat_admin/admin42/views/engine/egress.py:77 +#: paasng/plat_admin/admin42/views/engine/egress.py:76 msgid "当前环境所部署的集群不支持 BCS Egress" msgstr "" -#: paasng/plat_admin/admin42/views/services.py:119 +#: paasng/plat_admin/admin42/views/services.py:118 msgid "当前环境不存在未分配的增强服务实例" msgstr "" "There are no unallocated instances of Add-ons in the current environment" -#: paasng/plat_admin/admin42/views/services.py:138 +#: paasng/plat_admin/admin42/views/services.py:137 msgid "迁移应用不支持回收增强服务实例" msgstr "" -#: paasng/plat_admin/numbers/app.py:538 +#: paasng/plat_admin/numbers/app.py:537 msgid "未上线" msgstr "Not yet online" -#: paasng/plat_admin/numbers/app.py:539 +#: paasng/plat_admin/numbers/app.py:538 msgid "已上线" msgstr "Now online" -#: paasng/plat_admin/numbers/app.py:540 -#: paasng/platform/applications/views.py:894 +#: paasng/plat_admin/numbers/app.py:539 +#: paasng/platform/applications/views.py:934 msgid "已下架" msgstr "Archived" -#: paasng/plat_admin/numbers/app.py:541 +#: paasng/plat_admin/numbers/app.py:540 msgid "测试中" msgstr "Testing in progress" -#: paasng/plat_admin/system/views.py:179 paasng/plat_admin/system/views.py:271 +#: paasng/plat_admin/system/views.py:178 paasng/plat_admin/system/views.py:272 msgid "无法获取到有效的配置信息." msgstr "No valid configuration information is available." -#: paasng/platform/applications/constants.py:103 -msgid "使用蓝鲸日志平台方案查询日志" -msgstr "" +#: paasng/platform/applications/constants.py:97 +#, fuzzy +#| msgid "使用蓝鲸日志平台方案采集日志" +msgid "使用蓝鲸日志平台接口查询日志" +msgstr "Uses BlueKing log platform for log collection" -#: paasng/platform/applications/constants.py:104 +#: paasng/platform/applications/constants.py:99 msgid "开启出口 IP 管理" msgstr "" -#: paasng/platform/applications/constants.py:107 +#: paasng/platform/applications/constants.py:102 msgid "开启持久存储挂载卷" msgstr "" -#: paasng/platform/applications/exceptions.py:25 +#: paasng/platform/applications/exceptions.py:23 msgid "应用编码" msgstr "APP ID" -#: paasng/platform/applications/exceptions.py:26 +#: paasng/platform/applications/exceptions.py:24 msgid "应用名称" msgstr "APP Name" -#: paasng/platform/applications/protections.py:54 +#: paasng/platform/applications/protections.py:53 msgid "S-Mart 不可关闭应用描述文件" msgstr "S-Mart cannot close the APP description file" -#: paasng/platform/applications/serializers/app.py:56 +#: paasng/platform/applications/serializers/app.py:60 msgid "应用引擎参数未提供" msgstr "APP engine parameters not provided" -#: paasng/platform/applications/serializers/app.py:62 +#: paasng/platform/applications/serializers/app.py:66 #, fuzzy #| msgid "已开启引擎,类型不能为 \"enginess_app\"" msgid "已开启引擎,类型不能为 \"engineless_app\"" msgstr "Engine enabled, type cannot be \"enginess_app" -#: paasng/platform/applications/serializers/app.py:82 +#: paasng/platform/applications/serializers/app.py:86 msgid "该接口只支持创建外链应用" msgstr "" -#: paasng/platform/applications/serializers/app.py:123 +#: paasng/platform/applications/serializers/app.py:128 msgid "{}已经被占用" msgstr "{} is occupied" -#: paasng/platform/applications/serializers/app.py:209 +#: paasng/platform/applications/serializers/app.py:266 #, python-format msgid "无效的选项: %s" msgstr "Invalid option: %s" -#: paasng/platform/applications/serializers/app.py:244 +#: paasng/platform/applications/serializers/app.py:301 #, python-format msgid "无效的分类选项: %s" msgstr "Invalid classification option: %s" -#: paasng/platform/applications/serializers/cnative.py:34 +#: paasng/platform/applications/serializers/cnative.py:35 msgid "源码/镜像配置" msgstr "" -#: paasng/platform/applications/serializers/fields.py:39 #: paasng/platform/applications/serializers/fields.py:40 +#: paasng/platform/applications/serializers/fields.py:41 +#: paasng/platform/applications/serializers/fields.py:66 msgid "应用 ID" msgstr "APP ID" -#: paasng/platform/applications/serializers/fields.py:43 +#: paasng/platform/applications/serializers/fields.py:44 #: paasng/platform/modules/serializers.py:65 msgid "格式错误,只能包含小写字母(a-z)、数字(0-9)和半角连接符(-)" msgstr "" "Wrong format, can only contain lowercase letters (a-z), numbers (0-9) and " "half-corner ligatures (-)" -#: paasng/platform/applications/serializers/member_role.py:24 +#: paasng/platform/applications/serializers/fields.py:67 +msgid "格式错误,只能包含小写字母(a-z)、数字(0-9)和半角连接符(-)和下划线(_)" +msgstr "" +"Format error, can only contain lowercase letters (a-z), numbers (0-9), and " +"half-width hyphens (-) and underscores ()" + +#: paasng/platform/applications/serializers/member_role.py:40 #, python-format msgid "%s 不是合法选项" msgstr "%s is not a legal option" -#: paasng/platform/applications/serializers/mixins.py:52 +#: paasng/platform/applications/serializers/mixins.py:51 #, python-brace-format msgid "集群名称错误,无法找到名为 {value} 的集群" msgstr "Cluster name error, cluster named {value} could not be found" -#: paasng/platform/applications/serializers/validators.py:72 +#: paasng/platform/applications/serializers/validators.py:71 msgid "{} 为 {} 的应用已存在" msgstr "{} for {} already exists" -#: paasng/platform/applications/serializers/validators.py:95 +#: paasng/platform/applications/serializers/validators.py:94 msgid "不支持修改应用 ID" msgstr "Modifying APP ID is not supported" -#: paasng/platform/applications/views.py:287 +#: paasng/platform/applications/views.py:321 msgid "删除应用前, 请先从到「应用市场」下架该应用" msgstr "Before deleting an APP, please archive it from the App Market." -#: paasng/platform/applications/views.py:383 +#: paasng/platform/applications/views.py:430 #, fuzzy #| msgid "{} 为 {} 的应用已存在" msgid "code 为 {} 或 name 为 {} 的应用已存在" msgstr "{} for {} already exists" -#: paasng/platform/applications/views.py:410 -#: paasng/platform/applications/views.py:501 +#: paasng/platform/applications/views.py:457 +#: paasng/platform/applications/views.py:548 msgid "你无法使用高级创建选项" msgstr "You cannot use the advanced creation option" -#: paasng/platform/applications/views.py:421 -#: paasng/platform/applications/views.py:511 +#: paasng/platform/applications/views.py:468 +#: paasng/platform/applications/views.py:558 msgid "当前版本下无法创建蓝鲸插件应用" msgstr "The bk-plugin APP cannot be created under the current version" -#: paasng/platform/applications/views.py:490 +#: paasng/platform/applications/views.py:537 #, fuzzy #| msgid "你无法创建 SMart 应用" msgid "你无法创建云原生应用" msgstr "You cannot create a S-mart APP" -#: paasng/platform/applications/views.py:589 +#: paasng/platform/applications/views.py:634 msgid "你无法在所指定的 region 中创建应用" msgstr "You cannot create an application in the specified region" -#: paasng/platform/applications/views.py:612 +#: paasng/platform/applications/views.py:652 #, python-format msgid "集群未配置默认的根域名, 请检查 region=%s 下的集群配置是否合理." msgstr "" -#: paasng/platform/applications/views.py:712 -#: paasng/platform/modules/views.py:318 +#: paasng/platform/applications/views.py:752 +#: paasng/platform/modules/views.py:317 msgid "你无法使用非默认的源码来源" msgstr "You cannot use non-default source code sources" -#: paasng/platform/applications/views.py:890 +#: paasng/platform/applications/views.py:930 msgid "开发中" msgstr "Developing" -#: paasng/platform/applications/views.py:891 -#: paasng/platform/engine/constants.py:41 +#: paasng/platform/applications/views.py:931 +#: paasng/platform/engine/constants.py:40 msgid "预发布环境" msgstr " Stag Env " -#: paasng/platform/applications/views.py:892 -#: paasng/platform/engine/constants.py:42 +#: paasng/platform/applications/views.py:932 +#: paasng/platform/engine/constants.py:41 msgid "生产环境" msgstr "Prod Env" -#: paasng/platform/applications/views.py:893 +#: paasng/platform/applications/views.py:933 msgid "应用市场" msgstr " Market " -#: paasng/platform/bkapp_model/serializers.py:119 +#: paasng/platform/bkapp_model/serializers.py:113 +msgid "至多设置一个探活配置" +msgstr "" + +#: paasng/platform/bkapp_model/serializers.py:115 +msgid "至少设置一个探活配置" +msgstr "" + +#: paasng/platform/bkapp_model/serializers.py:198 msgid "应用{}不存在" msgstr "The application {} cannot be found." -#: paasng/platform/bkapp_model/serializers.py:124 +#: paasng/platform/bkapp_model/serializers.py:203 msgid "模块{}不存在" msgstr "The module {} cannot be found." -#: paasng/platform/bkapp_model/serializers.py:139 +#: paasng/platform/bkapp_model/serializers.py:221 msgid "服务发现列表中存在重复项:{}" msgstr "Duplicate entries found in svc-discovery list: {}" -#: paasng/platform/bkapp_model/serializers.py:158 +#: paasng/platform/bkapp_model/serializers.py:240 msgid "至少需要提供一个有效值:nameservers 或 host_aliases" msgstr "" -#: paasng/platform/bkapp_model/serializers.py:164 +#: paasng/platform/bkapp_model/serializers.py:246 msgid "BkApp 配置信息" msgstr "config info" -#: paasng/platform/bkapp_model/services.py:113 -#, fuzzy -#| msgid "请联系管理员" -msgid "暂无可用集群, 请联系管理员" -msgstr "Please contact administrator" - -#: paasng/platform/bkapp_model/services.py:118 -#, python-brace-format -msgid "集群 {default_cluster_name} 未就绪, 请联系管理员" -msgstr "" -"Cluster {default_cluster_name} is not ready, please contact administrator" - -#: paasng/platform/declarative/application/controller.py:89 +#: paasng/platform/declarative/application/controller.py:88 msgid "用户没有权限在 {} 下创建应用" msgstr "User does not have permission to create APP under {}" -#: paasng/platform/declarative/application/controller.py:148 +#: paasng/platform/declarative/application/controller.py:147 msgid "你没有权限操作当前应用" msgstr "You do not have permission to operate the current APP" -#: paasng/platform/declarative/application/controller.py:200 +#: paasng/platform/declarative/application/controller.py:199 msgid "未定义主模块, 请检查 app_desc.yaml." msgstr "default module not defined, please check app_desc.yaml." -#: paasng/platform/declarative/application/controller.py:217 +#: paasng/platform/declarative/application/controller.py:216 #, python-brace-format msgid "" "目标 {new_default_module_name} 模块未满足应用市场服务开启条件,切换主模块会导" @@ -2114,287 +2194,402 @@ msgstr "" "abnormally in the market. Please turn off the market switch and operate " "again." -#: paasng/platform/declarative/application/resources.py:126 +#: paasng/platform/declarative/application/resources.py:125 msgid "当前应用未定义主模块" msgstr "The current APP does not define a default module" -#: paasng/platform/declarative/application/validations/v2.py:125 -#: paasng/platform/declarative/application/validations/v3.py:141 -#: paasng/platform/declarative/serializers.py:157 -msgid "格式错误,只能包含小写字母(a-z)、数字(0-9)和半角连接符(-)和下划线(_)" -msgstr "" -"Format error, can only contain lowercase letters (a-z), numbers (0-9), and " -"half-width hyphens (-) and underscores ()" - -#: paasng/platform/declarative/application/validations/v2.py:149 -#: paasng/platform/declarative/application/validations/v3.py:166 +#: paasng/platform/declarative/application/validations/v2.py:139 +#: paasng/platform/declarative/application/validations/v3.py:149 msgid "一个应用只能有一个主模块" msgstr "An app can only have one default module" -#: paasng/platform/declarative/application/validations/v2.py:152 -#: paasng/platform/declarative/application/validations/v3.py:169 -msgid "一个应用必须有一个主模块" -msgstr "An APP must have a default module" +#: paasng/platform/declarative/application/validations/v2.py:142 +#: paasng/platform/declarative/application/validations/v3.py:152 +msgid "一个应用必须有一个主模块" +msgstr "An APP must have a default module" + +#: paasng/platform/declarative/application/validations/v2.py:149 +#: paasng/platform/declarative/application/validations/v3.py:159 +msgid "提供共享增强服务的模块不存在" +msgstr "module providing shared Add-ons does not exist" + +#: paasng/platform/declarative/deployment/validations/v2.py:116 +msgid "至少需要指定一个有效的探活检测机制" +msgstr "" + +#: paasng/platform/declarative/handlers.py:190 +#: paasng/platform/declarative/handlers.py:192 +msgid "内容不能为空" +msgstr "content cannot be empty" + +#: paasng/platform/declarative/handlers.py:270 +#: paasng/platform/declarative/handlers.py:299 +#, fuzzy +#| msgid "内容不能为空" +msgid "模块配置内容不能为空" +msgstr "content cannot be empty" + +#: paasng/platform/declarative/handlers.py:291 +msgid "未找到 {} 模块的配置,当前已配置模块为 {}" +msgstr "" + +#: paasng/platform/declarative/protections.py:30 +msgid "通过描述文件定义的应用不支持该操作" +msgstr "" +"This operation is not supported by the APP defined by the description file" + +#: paasng/platform/declarative/serializers.py:142 +msgid "" +"格式错误,只能以 \"BKAPP_\" 开头,由大写字母、数字与下划线组成,长度不超过 " +"50。" +msgstr "" +"Format error, can only start with \"BKAPP\", consist of uppercase letters, " +"numbers and underscores, and must not exceed 50" + +#: paasng/platform/engine/configurations/config_var.py:144 +msgid "平台提供的静态资源地址前缀,不推荐使用" +msgstr "Static resource URL prefix provided by the platform, not recommended for use" + +#: paasng/platform/engine/configurations/config_var.py:145 +msgid "蓝鲸统一登录访问地址" +msgstr "BlueKing login service URL" + +#: paasng/platform/engine/configurations/config_var.py:146 +msgid "蓝鲸统一登录服务域名" +msgstr "BlueKing login service domain" + +#: paasng/platform/engine/configurations/config_var.py:147 +msgid "蓝鲸 APIGW 提供的 OAuth 服务,不推荐使用" +msgstr "OAuth services provided by the BlueKing API Gateway, not recommended for use" + +#: paasng/platform/engine/configurations/config_var.py:155 +msgid "应用移动端访问地址,不推荐使用" +msgstr "Mobile access URL of the APP, not recommended for use" + +#: paasng/platform/engine/configurations/config_var.py:158 +msgid "应用移动端静态资源地址前缀,不推荐使用" +msgstr "Mobile static resource URL prefix of the APP, not recommended for use" + +#: paasng/platform/engine/configurations/config_var.py:173 +msgid "蓝鲸统一登录访问地址,建议切换为 BKPAAS_LOGIN_URL" +msgstr "BlueKing login service URL, recommended to switch to BKPAAS_LOGIN_URL" + +#: paasng/platform/engine/configurations/config_var.py:185 +msgid "蓝鲸根域,用于获取登录票据、国际化语言等 cookie 信息" +msgstr "BlueKing root domain, used to obtain login tickets, international language cookies, etc." + +#: paasng/platform/engine/configurations/config_var.py:187 +msgid "蓝鲸PaaS平台访问URL" +msgstr "BlueKing PaaS platform access URL" + +#: paasng/platform/engine/configurations/config_var.py:189 +msgid "蓝鲸桌面访问地址" +msgstr "BlueKing desktop access URL" + +#: paasng/platform/engine/configurations/config_var.py:190 +msgid "蓝鲸配置平台访问地址" +msgstr "BlueKing configuration platform access URL" + +#: paasng/platform/engine/configurations/config_var.py:191 +msgid "蓝鲸作业平台访问地址" +msgstr "BlueKing job platform access URL" + +#: paasng/platform/engine/configurations/config_var.py:192 +msgid "蓝鲸权限中心访问地址" +msgstr "BlueKing permission center access URL" + +#: paasng/platform/engine/configurations/config_var.py:193 +msgid "蓝鲸用户管理访问地址" +msgstr "BlueKing user management access URL" + +#: paasng/platform/engine/configurations/config_var.py:194 +msgid "蓝鲸监控平台访问地址" +msgstr "BlueKing monitoring platform access URL" + +#: paasng/platform/engine/configurations/config_var.py:195 +msgid "蓝鲸日志平台访问地址" +msgstr "BlueKing log platform access URL" + +#: paasng/platform/engine/configurations/config_var.py:196 +msgid "蓝鲸制品库访问地址" +msgstr "BlueKing artifact repository access URL" + +#: paasng/platform/engine/configurations/config_var.py:197 +msgid "蓝鲸持续集成平台(蓝盾)访问地址" +msgstr "BlueKing continuous integration platform access URL" + +#: paasng/platform/engine/configurations/config_var.py:198 +msgid "蓝鲸代码检查平台访问地址" +msgstr "BlueKing code inspection platform access URL" -#: paasng/platform/declarative/application/validations/v2.py:159 -#: paasng/platform/declarative/application/validations/v3.py:176 -msgid "提供共享增强服务的模块不存在" -msgstr "module providing shared Add-ons does not exist" +#: paasng/platform/engine/configurations/config_var.py:199 +msgid "蓝鲸编译加速平台访问地址" +msgstr "BlueKing build acceleration platform access URL" -#: paasng/platform/declarative/deployment/validations/v2.py:117 -msgid "至少需要指定一个有效的探活检测机制" -msgstr "" +#: paasng/platform/engine/configurations/config_var.py:200 +msgid "蓝鲸流水线访问地址" +msgstr "BlueKing pipeline access URL" -#: paasng/platform/declarative/handlers.py:128 -#: paasng/platform/declarative/handlers.py:191 -#: paasng/platform/declarative/handlers.py:202 -#: paasng/platform/declarative/handlers.py:204 -msgid "内容不能为空" -msgstr "content cannot be empty" +#: paasng/platform/engine/configurations/config_var.py:203 +msgid "蓝鲸产品 title/footer/name/logo 等资源自定义配置的路径" +msgstr "Path for custom configuration of BlueKing product title/footer/name/logo, etc." -#: paasng/platform/declarative/protections.py:31 -msgid "通过描述文件定义的应用不支持该操作" -msgstr "" -"This operation is not supported by the APP defined by the description file" +#: paasng/platform/engine/configurations/config_var.py:207 +msgid "加密数据库内容的推荐算法有:SHANGMI(对应 SM4CTR 算法)和 CLASSIC(对应 Fernet 算法)" +msgstr "Recommended algorithms for database encryption: SHANGMI (corresponding to the SM4CTR algorithm) and CLASSIC (corresponding to the Fernet algorithm)" -#: paasng/platform/declarative/serializers.py:144 -msgid "" -"格式错误,只能以 \"BKAPP_\" 开头,由大写字母、数字与下划线组成,长度不超过 " -"50。" -msgstr "" -"Format error, can only start with \"BKAPP\", consist of uppercase letters, " -"numbers and underscores, and must not exceed 50" +#: paasng/platform/engine/configurations/config_var.py:215 +msgid "网关 API 访问地址模板" +msgstr "API Gateway API access URL template" -#: paasng/platform/engine/constants.py:135 +#: paasng/platform/engine/configurations/config_var.py:216 +msgid "组件 API 访问地址" +msgstr "Component API access URL" + +#: paasng/platform/engine/configurations/config_var.py:217 +msgid "PaaS2.0 开发者中心地址" +msgstr "PaaS 2.0 developer center URL" + +#: paasng/platform/engine/constants.py:134 msgid "当前用户无部署该环境的权限" msgstr "The current user does not have permission to deploy this environment" -#: paasng/platform/engine/constants.py:136 +#: paasng/platform/engine/constants.py:135 msgid "当前用户尚未绑定 OAUTH 授权信息" msgstr "The current user has not yet bound the OAUTH authorization information" -#: paasng/platform/engine/constants.py:137 +#: paasng/platform/engine/constants.py:136 msgid "当前用户没有访问源码仓库的权限" msgstr "The current user does not have permission to access the repository" -#: paasng/platform/engine/constants.py:138 +#: paasng/platform/engine/constants.py:137 msgid "当前源码仓库信息异常" msgstr "The current source code repository information is abnormal" -#: paasng/platform/engine/constants.py:139 -#: paasng/platform/engine/workflow/protections.py:128 +#: paasng/platform/engine/constants.py:138 +#: paasng/platform/engine/workflow/protections.py:127 msgid "未完善进程启动命令" msgstr "Incomplete process start command" -#: paasng/platform/engine/constants.py:140 +#: paasng/platform/engine/constants.py:139 msgid "当前用户未授权 CI 组件访问仓库的权限" msgstr "" "The current user does not authorize the CI component to access the repository" -#: paasng/platform/engine/constants.py:141 -#: paasng/platform/engine/workflow/protections.py:152 +#: paasng/platform/engine/constants.py:140 +#: paasng/platform/engine/workflow/protections.py:151 msgid "未设置插件分类" msgstr "" -#: paasng/platform/engine/constants.py:146 +#: paasng/platform/engine/constants.py:145 msgid "使用 Buildpacks 构建" msgstr "" -#: paasng/platform/engine/constants.py:147 +#: paasng/platform/engine/constants.py:146 msgid "使用 Dockerfile 构建" msgstr "" -#: paasng/platform/engine/constants.py:160 +#: paasng/platform/engine/constants.py:159 msgid "蓝鲸应用ID" msgstr "BK APP ID" -#: paasng/platform/engine/constants.py:161 +#: paasng/platform/engine/constants.py:160 msgid "蓝鲸应用密钥" msgstr "BK APP Secret" -#: paasng/platform/engine/constants.py:167 +#: paasng/platform/engine/constants.py:166 msgid "应用当前模块名" msgstr "Current Module Name" -#: paasng/platform/engine/constants.py:168 +#: paasng/platform/engine/constants.py:167 msgid "应用当前环境,预发布环境为 stag、生产环境为 prod" msgstr "" "Current environment, the pre-release environment is stag, and the production " "environment is prod" -#: paasng/platform/engine/constants.py:169 +#: paasng/platform/engine/constants.py:168 msgid "应用当前运行的开发者中心版本,值为 3" msgstr "The currently running Dev Center version, the value is 3" -#: paasng/platform/engine/constants.py:170 +#: paasng/platform/engine/constants.py:169 msgid "应用版本,默认版本为 default" msgstr "APP version, the default version is default" -#: paasng/platform/engine/constants.py:176 +#: paasng/platform/engine/constants.py:172 +msgid "" +"应用模块各环境的访问地址,如 {\"stag\": \"http://stag.com\", \"prod\": " +"\"http://prod.com\"}" +msgstr "" + +#: paasng/platform/engine/constants.py:179 msgid "目标端口号,值为 5000" msgstr "Destination port number, the value is 5000" -#: paasng/platform/engine/deploy/archive/base.py:64 +#: paasng/platform/engine/deploy/archive/base.py:63 msgid "存在正在进行的下架任务" msgstr "Ongoing archive tasks exist" -#: paasng/platform/engine/deploy/bg_command/pre_release.py:52 +#: paasng/platform/engine/deploy/bg_command/pre_release.py:51 msgid "The Pre-release command is not configured, skip the Pre-release phase." msgstr "" -#: paasng/platform/engine/deploy/building.py:132 +#: paasng/platform/engine/deploy/building.py:140 #, python-brace-format msgid "" "The source directory '{source_dir}' is not a legal directory,please check " "repository to confirm." msgstr "" -#: paasng/platform/engine/deploy/building.py:158 -#: paasng/platform/engine/deploy/image_release.py:204 +#: paasng/platform/engine/deploy/building.py:170 +#: paasng/platform/engine/deploy/image_release.py:210 #, fuzzy #| msgid "分析应用描述文件异常" msgid "应用描述文件解析异常: {}" msgstr "Analyzing APP Description File Exceptions" -#: paasng/platform/engine/deploy/building.py:166 -#: paasng/platform/engine/deploy/image_release.py:210 +#: paasng/platform/engine/deploy/building.py:177 +#: paasng/platform/engine/deploy/image_release.py:216 msgid "处理应用描述文件时出现异常, 请检查应用描述文件" msgstr "" "An exception occurred while processing the app description file, please " "Check APP description file " -#: paasng/platform/engine/deploy/building.py:229 +#: paasng/platform/engine/deploy/building.py:240 #, python-brace-format msgid "" "The predefined Add-ons {unbound_service_names} in the initial template are " "not enabled, please check if they need to be enabled" msgstr "" -#: paasng/platform/engine/deploy/building.py:329 -#: paasng/platform/engine/deploy/building.py:435 +#: paasng/platform/engine/deploy/building.py:340 +#: paasng/platform/engine/deploy/building.py:450 msgid "发布时自动构建" msgstr "Automatically build when deploying" -#: paasng/platform/engine/deploy/interruptions.py:27 +#: paasng/platform/engine/deploy/interruptions.py:43 msgid "无法中断由他人发起的部署" msgstr "Cannot interrupt deployment initiated by others" -#: paasng/platform/engine/deploy/interruptions.py:29 +#: paasng/platform/engine/deploy/interruptions.py:45 msgid "无法中断,部署已处于结束状态" msgstr "cannot be interrupted, deployment has ended" -#: paasng/platform/engine/models/phases.py:39 +#: paasng/platform/engine/models/phases.py:38 msgid "准备阶段" msgstr "Preparation Phase" -#: paasng/platform/engine/models/phases.py:40 +#: paasng/platform/engine/models/phases.py:39 msgid "构建阶段" msgstr "Build Phase" -#: paasng/platform/engine/models/phases.py:41 +#: paasng/platform/engine/models/phases.py:40 msgid "部署阶段" msgstr "Deploy Phase" -#: paasng/platform/engine/models/phases.py:56 +#: paasng/platform/engine/models/phases.py:55 msgid "部署阶段类型" msgstr "deployment phase type" -#: paasng/platform/engine/models/phases.py:57 +#: paasng/platform/engine/models/phases.py:56 msgid "关联引擎应用" msgstr "engine_app" -#: paasng/platform/engine/models/phases.py:58 +#: paasng/platform/engine/models/phases.py:57 msgid "关联部署操作" msgstr "deployment" -#: paasng/platform/engine/models/phases.py:60 -#: paasng/platform/engine/models/steps.py:141 +#: paasng/platform/engine/models/phases.py:59 +#: paasng/platform/engine/models/steps.py:140 msgid "阶段开始时间" msgstr "phase start time" -#: paasng/platform/engine/models/phases.py:61 -#: paasng/platform/engine/models/steps.py:142 +#: paasng/platform/engine/models/phases.py:60 +#: paasng/platform/engine/models/steps.py:141 msgid "阶段完成时间" msgstr "phase Completion time" -#: paasng/platform/engine/models/steps.py:56 -#: paasng/platform/engine/models/steps.py:138 +#: paasng/platform/engine/models/steps.py:55 +#: paasng/platform/engine/models/steps.py:137 msgid "关联阶段" msgstr "phase" -#: paasng/platform/engine/models/steps.py:57 -#: paasng/platform/engine/models/steps.py:136 +#: paasng/platform/engine/models/steps.py:56 +#: paasng/platform/engine/models/steps.py:135 msgid "步骤名称" msgstr "step name" -#: paasng/platform/engine/models/steps.py:58 -#: paasng/platform/engine/models/steps.py:137 +#: paasng/platform/engine/models/steps.py:57 +#: paasng/platform/engine/models/steps.py:136 msgid "步骤名称(展示用)" msgstr "display name" +#: paasng/platform/engine/models/steps.py:59 #: paasng/platform/engine/models/steps.py:60 -#: paasng/platform/engine/models/steps.py:61 msgid "匹配规则" msgstr "match rules" -#: paasng/platform/engine/models/steps.py:86 +#: paasng/platform/engine/models/steps.py:85 msgid "步骤集名称" msgstr "step set name" -#: paasng/platform/engine/models/steps.py:88 +#: paasng/platform/engine/models/steps.py:87 msgid "是否为默认步骤集" msgstr "is default step set" -#: paasng/platform/engine/models/steps.py:139 +#: paasng/platform/engine/models/steps.py:138 msgid "是否跳过" msgstr "skip" -#: paasng/platform/engine/models/steps.py:145 +#: paasng/platform/engine/models/steps.py:144 msgid "元信息" msgstr "meta" -#: paasng/platform/engine/processes/views.py:73 +#: paasng/platform/engine/processes/views.py:67 msgid "当前运行镜像不支持 WebConsole 功能,请尝试绑定最新运行时" msgstr "" "The current runtime image does not support WebConsole functionality, please " "try to bundle the latest APP Runtime" -#: paasng/platform/engine/serializers.py:286 +#: paasng/platform/engine/serializers.py:100 +msgid "version_type 为 image 时,revision 必须为 sha256 开头的镜像 digest" +msgstr "" + +#: paasng/platform/engine/serializers.py:309 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: paasng/platform/engine/serializers.py:287 +#: paasng/platform/engine/serializers.py:310 msgid "Invalid value." msgstr "" -#: paasng/platform/engine/serializers.py:327 +#: paasng/platform/engine/serializers.py:350 #, python-brace-format msgid "该环境下同名变量 {key} 已存在。" msgstr "A variable with the same name {key} already exists in this environment" -#: paasng/platform/engine/serializers.py:329 +#: paasng/platform/engine/serializers.py:352 #, python-brace-format msgid "该环境下名称为 {key} 的变量已经存在,不能重复添加。" msgstr "" "The variable named {key} already exists in this environment and cannot be " "added repeatedly." -#: paasng/platform/engine/serializers.py:396 +#: paasng/platform/engine/serializers.py:419 #, python-format msgid "无效的排序选项:%s" msgstr "Invalid sort option: %s" -#: paasng/platform/engine/utils/source.py:159 +#: paasng/platform/engine/utils/source.py:158 msgid "" "Warning: Process definition conflict, will use the one defined in `Procfile`" msgstr "" -#: paasng/platform/engine/utils/source.py:163 +#: paasng/platform/engine/utils/source.py:162 msgid "Missing process definition" msgstr "" -#: paasng/platform/engine/utils/source.py:247 +#: paasng/platform/engine/utils/source.py:246 #, python-brace-format msgid "" "WARNING: 应用源码包体积过大(>{warning_threshold}MB),将严重影响部署性能,请" @@ -2409,112 +2604,140 @@ msgstr "" msgid "历史版本不存在或已被清理" msgstr "" -#: paasng/platform/engine/views/deploy.py:214 +#: paasng/platform/engine/views/deploy.py:211 #, python-brace-format msgid "应用描述文件校验失败:{exception}" msgstr "APP description file verification failed: {exception}" -#: paasng/platform/engine/views/deploy.py:216 +#: paasng/platform/engine/views/deploy.py:213 msgid "对象存储服务异常, 请稍后再试" msgstr "Object storage service exception, please try again later" -#: paasng/platform/engine/views/deploy.py:332 +#: paasng/platform/engine/views/deploy.py:329 #, python-brace-format msgid "没有 id 为 {id} 的部署记录" msgstr "No deployment record with id {id}" -#: paasng/platform/engine/views/deploy.py:336 +#: paasng/platform/engine/views/deploy.py:333 #, python-brace-format msgid "模块 {module_name} 下没有 id 为 {id} 的部署记录" msgstr "No deployment record with id {id} under module {module_name}" -#: paasng/platform/engine/views/misc.py:98 +#: paasng/platform/engine/views/misc.py:97 msgid "没有找到对应的部署记录,不允许下架" msgstr "No corresponding deployment record found, archive is not allowed" -#: paasng/platform/engine/views/misc.py:124 +#: paasng/platform/engine/views/misc.py:123 #, python-brace-format msgid "{code} 没有id为 {uuid} 的下架记录" msgstr "{code} does not have an unlisted record with id {uuid}" -#: paasng/platform/engine/views/release.py:152 +#: paasng/platform/engine/views/release.py:143 #, fuzzy #| msgid "engine服务异常" msgid "服务异常" msgstr "Engine service exception" -#: paasng/platform/engine/workflow/flow.py:96 +#: paasng/platform/engine/workflow/flow.py:97 #, python-brace-format msgid "步骤 [{title}] 出错了,原因:{reason}。" msgstr "Error in step [{title}], reason: {reason}." -#: paasng/platform/engine/workflow/flow.py:100 +#: paasng/platform/engine/workflow/flow.py:101 #, python-brace-format msgid "步骤 [{title}] 出错了,请稍候重试。" msgstr "Error in step [{title}], please try again later" -#: paasng/platform/engine/workflow/protections.py:81 +#: paasng/platform/engine/workflow/protections.py:80 msgid "当前用户尚未授权访问仓库" msgstr "The current user is not authorized to access the repository" -#: paasng/platform/engine/workflow/protections.py:83 +#: paasng/platform/engine/workflow/protections.py:82 #, python-brace-format msgid "当前用户尚未授权访问仓库: {source_type}" msgstr "" "The current user is not authorized to access the repository: {source_type}" -#: paasng/platform/engine/workflow/protections.py:90 +#: paasng/platform/engine/workflow/protections.py:89 #, python-brace-format msgid "当前用户没有访问源码仓库的权限,请给 {repo} 授权" msgstr "" "The current user does not have permission to access the source code " "repository, please authorize {repo}" -#: paasng/platform/engine/workflow/protections.py:94 +#: paasng/platform/engine/workflow/protections.py:93 msgid "当前账户没有访问源码仓库的权限,请确保账户名/密码正确" msgstr "" "The current account does not have permission to access the source code " "repository, please make sure the account name/password is correct" -#: paasng/platform/engine/workflow/protections.py:98 +#: paasng/platform/engine/workflow/protections.py:97 msgid "获取源码仓库信息失败,请确保仓库信息填写正确" msgstr "" "Failed to obtain source code repository information, please make sure that " "the repository information is filled in correctly" -#: paasng/platform/engine/workflow/protections.py:113 +#: paasng/platform/engine/workflow/protections.py:112 msgid "当前用户无部署该环境的权限, 请联系应用管理员" msgstr "" "The current user does not have permission to deploy this environment, please " "contact the APP administrator" -#: paasng/platform/evaluation/constants.py:27 +#: paasng/platform/evaluation/constants.py:25 +#, fuzzy +#| msgid "进行中" +msgid "运行中" +msgstr "Ongoing" + +#: paasng/platform/evaluation/constants.py:26 +msgid "已完成" +msgstr "" + +#: paasng/platform/evaluation/constants.py:32 +msgid "闲置应用模块" +msgstr "" + +#: paasng/platform/evaluation/constants.py:39 #, fuzzy #| msgid "系统 API 用户:具有轻应用管理权限" msgid "应用管理员" msgstr "System API users: have mini-app management permissions" -#: paasng/platform/evaluation/constants.py:33 +#: paasng/platform/evaluation/constants.py:45 msgid "无" msgstr "" -#: paasng/platform/evaluation/constants.py:34 +#: paasng/platform/evaluation/constants.py:46 msgid "无主" msgstr "" -#: paasng/platform/evaluation/constants.py:35 -msgid "不活跃" +#: paasng/platform/evaluation/constants.py:47 +msgid "闲置" +msgstr "" + +#: paasng/platform/evaluation/constants.py:48 +#, fuzzy +#| msgid "关闭用户访问限制" +msgid "无用户访问" +msgstr "disable user access restrictions" + +#: paasng/platform/evaluation/constants.py:49 +msgid "缺少维护" +msgstr "" + +#: paasng/platform/evaluation/constants.py:50 +msgid "未部署/已下线" msgstr "" -#: paasng/platform/evaluation/constants.py:36 -msgid "配置错误" +#: paasng/platform/evaluation/constants.py:51 +msgid "配置不当" msgstr "" #: paasng/platform/mgrlegacy/app_migrations/basic.py:55 msgid "创建应用对象" msgstr "Creating APP objects" -#: paasng/platform/mgrlegacy/app_migrations/basic.py:109 +#: paasng/platform/mgrlegacy/app_migrations/basic.py:108 msgid "同步应用基本信息" msgstr "Basic information about the Sync APP" @@ -2522,90 +2745,90 @@ msgstr "Basic information about the Sync APP" msgid "变更应用代码" msgstr "Change of APP code" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:42 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:40 msgid "部署到预发布环境和生产环境" msgstr "Deployment to s'tag and prod env" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:150 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:146 msgid "旧版本测试环境没有部署或者已经下架,跳过测试环境部署" msgstr "" "Older versions of the test environment are not deployed or have been " "archive, skip the test environment deployment" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:154 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:150 msgid "开始部署预发布环境" msgstr "Start deploying a stag e'nv" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:157 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:153 msgid "预发布环境部署失败" msgstr "stag env deployment failure" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:159 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:155 msgid "预发布环境部署成功" msgstr "stag env deployed successfully" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:163 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:159 msgid "旧版本正式环境没有部署或者已经下架,跳过正式环境部署" msgstr "" "Older versions of the test environment are not deployed or have been " "archive, Skip formal environment deployment" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:165 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:161 msgid "开始部署生产环境" msgstr "Start deploying a prod env" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:170 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:166 msgid "生产环境部署失败" msgstr "Failure to deploy to a prod env" -#: paasng/platform/mgrlegacy/app_migrations/deploy.py:172 +#: paasng/platform/mgrlegacy/app_migrations/deploy.py:168 msgid "生产环境部署成功" msgstr "Successful deployment in prod env" -#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:49 +#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:48 #, python-brace-format msgid "{env} 环境绑定出口IP异常, 详情: {detail}" msgstr "{env} environment binding exit IP exception, details: {detail}" -#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:54 +#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:53 #, python-brace-format msgid "{env} 环境绑定出口IP异常, 详情: 不能重复绑定" msgstr "" "{env} environment binding exit IP exception, details: cannot be repeatedly " "bound" -#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:56 +#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:55 #, python-brace-format msgid "{env} 环境绑定出口IP异常" msgstr "{env} environment binding exit IP exception" -#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:77 +#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:76 #, python-brace-format msgid "{env} 环境未获取过网关信息" msgstr "{env} The environment has not obtained gateway information." -#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:79 +#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:78 #, python-brace-format msgid "{env} 环境解绑出口IP异常" msgstr "{env} environment unbinding exit IP exception" -#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:82 +#: paasng/platform/mgrlegacy/app_migrations/egress_gateway.py:81 msgid "绑定出口 IP " msgstr "Binding Egress IP " -#: paasng/platform/mgrlegacy/app_migrations/entrance.py:33 +#: paasng/platform/mgrlegacy/app_migrations/entrance.py:32 msgid "换桌面入口" msgstr "Change desktop entry" -#: paasng/platform/mgrlegacy/app_migrations/entrance.py:53 +#: paasng/platform/mgrlegacy/app_migrations/entrance.py:52 msgid "应用接入层已经回滚到 PaaS2.0" msgstr "The APP access layer has been rolled back to PaaS2.0" -#: paasng/platform/mgrlegacy/app_migrations/envs_base.py:43 +#: paasng/platform/mgrlegacy/app_migrations/envs_base.py:42 msgid "同步环境变量" msgstr "Synchronising environment variables" -#: paasng/platform/mgrlegacy/app_migrations/market.py:32 +#: paasng/platform/mgrlegacy/app_migrations/market.py:31 msgid "同步应用市场信息" msgstr "Synchronise Market information" @@ -2629,39 +2852,39 @@ msgstr "Start rolling back the whitelist" msgid "白名单回滚成功" msgstr "Whitelist rollback successful" -#: paasng/platform/mgrlegacy/app_migrations/product.py:36 +#: paasng/platform/mgrlegacy/app_migrations/product.py:35 msgid "同步产品信息" msgstr "Synchronised product information" -#: paasng/platform/mgrlegacy/app_migrations/service.py:163 +#: paasng/platform/mgrlegacy/app_migrations/service.py:162 #, python-brace-format msgid "跳过步骤: 绑定增强服务<{service_name}>" msgstr "Skip step: Bind Add-ons<{service_name}>" -#: paasng/platform/mgrlegacy/app_migrations/service.py:188 +#: paasng/platform/mgrlegacy/app_migrations/service.py:187 #, python-brace-format msgid "绑定增强服务<{service_obj}>至默认模块<{module_name}>" msgstr "Bind Add-ons <{service_obj}> to default module <{module_name}>" -#: paasng/platform/mgrlegacy/app_migrations/service.py:202 +#: paasng/platform/mgrlegacy/app_migrations/service.py:201 #, python-brace-format msgid "绑定增强服务<{service_obj}>的默认方案至默认模块<{module_name}>" msgstr "" "Bind the default scheme of the Add-ons <{service_obj}> to the default module " "<{module_name}>" -#: paasng/platform/mgrlegacy/app_migrations/service.py:227 +#: paasng/platform/mgrlegacy/app_migrations/service.py:226 #, python-brace-format msgid "即将解绑增强服务实例<{service_instance_id}>" msgstr "About to unbind Add-ons instance <{service_instance_id}>" -#: paasng/platform/mgrlegacy/app_migrations/service_mysql.py:86 +#: paasng/platform/mgrlegacy/app_migrations/service_mysql.py:85 msgid "当前应用尚未部署过预发布环境, 跳过创建预发布环境的数据库实例。" msgstr "" "The current APP has not yet deployed the stag env, skip creating the " "database instance of the stag env" -#: paasng/platform/mgrlegacy/app_migrations/service_mysql.py:107 +#: paasng/platform/mgrlegacy/app_migrations/service_mysql.py:106 msgid "当前应用尚未部署过生产环境, 跳过创建生产环境的数据库实例。" msgstr "" "The current APP has not been deployed to the prod env, skip creating a " @@ -2671,7 +2894,7 @@ msgstr "" msgid "同步 MySQL 配置" msgstr "Sync MySQL Configuration" -#: paasng/platform/mgrlegacy/app_migrations/service_rabbitmq.py:60 +#: paasng/platform/mgrlegacy/app_migrations/service_rabbitmq.py:59 #, python-brace-format msgid "正在为 {environment} 环境创建 RabbitMQ 服务实例..." msgstr "Creating RabbitMQ service instance for {environment} environment..." @@ -2684,17 +2907,17 @@ msgstr "Sync the RabbitMQ Configuration" msgid "同步SVN版本库信息" msgstr "Sync SVN repository information" -#: paasng/platform/mgrlegacy/legacy_proxy.py:80 +#: paasng/platform/mgrlegacy/legacy_proxy.py:79 #: paasng/platform/mgrlegacy/legacy_proxy_te.py:102 msgid "暂不支持轻应用迁移" msgstr " Mini-APP migration is not currently supported" -#: paasng/platform/mgrlegacy/legacy_proxy.py:84 +#: paasng/platform/mgrlegacy/legacy_proxy.py:83 #: paasng/platform/mgrlegacy/legacy_proxy_te.py:108 msgid "暂不支持该类型应用迁移" msgstr "This type of APP migration is not currently supported" -#: paasng/platform/mgrlegacy/legacy_proxy.py:87 +#: paasng/platform/mgrlegacy/legacy_proxy.py:86 #: paasng/platform/mgrlegacy/legacy_proxy_te.py:117 msgid "目前仅支持Python应用迁移" msgstr "Previously only supported Python APP migration" @@ -2707,89 +2930,82 @@ msgstr "" msgid "未知原因, 请联系管理员处理" msgstr "No known reason, please contact the administrator" -#: paasng/platform/mgrlegacy/views.py:174 +#: paasng/platform/mgrlegacy/views.py:200 msgid "已确认后的应用无法回滚" msgstr "APP that have been confirmed cannot be rolled back" -#: paasng/platform/modules/manager.py:363 -#: paasng/platform/modules/manager.py:406 +#: paasng/platform/modules/manager.py:346 +#: paasng/platform/modules/manager.py:384 msgid "服务暂时不可用,请稍候再试" msgstr "Service is temporarily unavailable, please try again later" -#: paasng/platform/modules/manager.py:366 -#: paasng/platform/modules/manager.py:442 +#: paasng/platform/modules/manager.py:349 +#: paasng/platform/modules/manager.py:420 msgid "绑定初始增强服务失败,请稍候再试" msgstr "Failed to bind the initial Add-ons, please try again later" -#: paasng/platform/modules/manager.py:371 -#: paasng/platform/modules/manager.py:432 -#: paasng/platform/modules/manager.py:436 +#: paasng/platform/modules/manager.py:354 +#: paasng/platform/modules/manager.py:410 +#: paasng/platform/modules/manager.py:414 msgid "绑定初始运行环境失败,请稍候再试" msgstr "Failed to bind the initial runtime environment, please try again later" -#: paasng/platform/modules/manager.py:376 -#: paasng/platform/modules/manager.py:445 -#, fuzzy -#| msgid "代码初始化过程失败,请稍候再试" -msgid "初始化应用模型失败, 请稍候再试" -msgstr "Code initialization process failed, please wait and try again" - -#: paasng/platform/modules/manager.py:412 +#: paasng/platform/modules/manager.py:390 msgid "代码初始化过程失败,请稍候再试" msgstr "Code initialization process failed, please wait and try again" -#: paasng/platform/modules/manager.py:439 +#: paasng/platform/modules/manager.py:417 msgid "配置镜像 Registry 失败,请稍候再试" msgstr "Failed to configure mirror Registry, please try again later" -#: paasng/platform/modules/models/build_cfg.py:57 +#: paasng/platform/modules/manager.py:424 +#, fuzzy +#| msgid "代码初始化过程失败,请稍候再试" +msgid "初始化应用模型失败, 请稍候再试" +msgstr "Code initialization process failed, please wait and try again" + +#: paasng/platform/modules/models/build_cfg.py:56 msgid "构建方式" msgstr "" -#: paasng/platform/modules/models/build_cfg.py:72 +#: paasng/platform/modules/models/build_cfg.py:71 msgid "" "Dockerfile文件路径, 必须保证 Dockerfile 在构建目录下, 填写时无需包含构建目录" msgstr "" -#: paasng/platform/modules/models/build_cfg.py:78 +#: paasng/platform/modules/models/build_cfg.py:77 #, fuzzy #| msgid "容器镜像仓库" msgid "镜像仓库" msgstr "Image repository" -#: paasng/platform/modules/models/build_cfg.py:80 -#, fuzzy -#| msgid "容器镜像仓库" -msgid "镜像地址" -msgstr "Image repository" - -#: paasng/platform/modules/models/build_cfg.py:81 +#: paasng/platform/modules/models/build_cfg.py:78 msgid "镜像凭证名称" msgstr "" -#: paasng/platform/modules/protections.py:48 +#: paasng/platform/modules/protections.py:47 #, python-brace-format msgid "{module_name} 模块正在进行部署或下架操作,请操作结束后再尝试删除" msgstr "" "{module_name} The module is being deployed or archive, please try to delete " "it again after the operation is finished." -#: paasng/platform/modules/protections.py:69 +#: paasng/platform/modules/protections.py:68 msgid "删除模块前,请先将所有部署环境下架" msgstr "Before deleting the module, please archive all deployment environments" -#: paasng/platform/modules/protections.py:82 +#: paasng/platform/modules/protections.py:81 msgid "删除模块前,请先确认所有独立域名已经下线" msgstr "" "Before deleting the module, please make sure all domains have been archived" #: paasng/platform/modules/serializers.py:155 -#: paasng/platform/templates/models.py:42 +#: paasng/platform/templates/models.py:41 msgid "模板名称" msgstr "" #: paasng/platform/modules/serializers.py:164 -#: paasng/platform/modules/serializers.py:396 +#: paasng/platform/modules/serializers.py:405 msgid "名称为 {} 的模块已存在" msgstr " APP name %s already exists " @@ -2798,38 +3014,38 @@ msgstr " APP name %s already exists " msgid "模板 {} 不可用" msgstr "Template {} is unavailabl" -#: paasng/platform/modules/serializers.py:335 +#: paasng/platform/modules/serializers.py:344 msgid "镜像凭证信息" msgstr "Image credential information" -#: paasng/platform/modules/serializers.py:357 +#: paasng/platform/modules/serializers.py:366 msgid "构建配置" msgstr "Build configuration" -#: paasng/platform/modules/serializers.py:375 +#: paasng/platform/modules/serializers.py:384 msgid "源码配置" msgstr "Source code configuration" -#: paasng/platform/modules/serializers.py:438 -#: paasng/platform/modules/serializers.py:448 +#: paasng/platform/modules/serializers.py:447 +#: paasng/platform/modules/serializers.py:457 msgid "指令不能以 'start ' 开头." msgstr "The command cannot begin with 'start '." -#: paasng/platform/modules/views.py:188 +#: paasng/platform/modules/views.py:187 msgid "主模块不允许被删除" msgstr "The default module is not allowed to be deleted" -#: paasng/platform/modules/views.py:219 +#: paasng/platform/modules/views.py:218 #, python-brace-format msgid "{module_name} 模块已经被删除" msgstr "The {module_name} module has been removed." -#: paasng/platform/modules/views.py:222 +#: paasng/platform/modules/views.py:221 #, python-brace-format msgid "{module_name} 模块已经是主模块" msgstr "The {module_name} module is already the default module" -#: paasng/platform/modules/views.py:232 +#: paasng/platform/modules/views.py:231 #, python-brace-format msgid "" "目标 {module_name} 模块未满足应用市场服务开启条件,切换主模块会导致应用在市场" @@ -2839,16 +3055,16 @@ msgstr "" "Market service, switching the default module will cause the APP to be " "exceptionally accessible in the marketplace" -#: paasng/platform/modules/views.py:305 +#: paasng/platform/modules/views.py:304 msgid "当前应用下不允许创建新模块" msgstr "New modules are not allowed to be created under the current APP" -#: paasng/platform/modules/views.py:310 +#: paasng/platform/modules/views.py:309 #, python-brace-format msgid "单个应用下最多能创建 {num} 个模块" msgstr "Up to {num} modules can be created under a single APP" -#: paasng/platform/modules/views.py:398 paasng/platform/modules/views.py:488 +#: paasng/platform/modules/views.py:397 paasng/platform/modules/views.py:488 msgid "构建工具不存在" msgstr "" @@ -2863,36 +3079,31 @@ msgid "当前应用不支持配置「启动命令」" msgstr "" "The current APP does not support the configuration of 「start commands」" -#: paasng/platform/scene_app/initializer.py:77 +#: paasng/platform/scene_app/initializer.py:76 #, fuzzy #| msgid "应用描述文件校验失败:{exception}" msgid "加载应用描述文件失败" msgstr "APP description file verification failed: {exception}" -#: paasng/platform/scene_app/initializer.py:78 +#: paasng/platform/scene_app/initializer.py:77 #, fuzzy #| msgid "应用描述文件内容不是有效 YAML 格式" msgid "应用描述文件不存在或内容不是有效 YAML 格式" msgstr "The content of the app description file is not in valid YAML format" -#: paasng/platform/smart_app/detector.py:125 -#: paasng/platform/smart_app/detector.py:126 -msgid "应用描述文件内容不是有效 YAML 格式" -msgstr "The content of the app description file is not in valid YAML format" - #: paasng/platform/smart_app/management/commands/smart_tool.py:57 -#: paasng/platform/smart_app/views.py:176 -#: paasng/platform/smart_app/views.py:221 +#: paasng/platform/smart_app/views.py:182 +#: paasng/platform/smart_app/views.py:236 msgid "缺失应用市场配置(market)!" msgstr "Missing Market configuration (market)!" #: paasng/platform/smart_app/management/commands/smart_tool.py:59 -#: paasng/platform/smart_app/views.py:178 -#: paasng/platform/smart_app/views.py:223 +#: paasng/platform/smart_app/views.py:184 +#: paasng/platform/smart_app/views.py:238 msgid "请检查源码包是否存在 app_desc.yaml 文件" msgstr "Please check if the source package has an app_desc.yaml file" -#: paasng/platform/smart_app/serializers.py:48 +#: paasng/platform/smart_app/serializers.py:47 msgid "" "格式错误,只能包含字母(a-zA-Z)、数字(0-9)和半角连接符(-)、下划线(_)、空格( )" "和点(.)" @@ -2900,82 +3111,99 @@ msgstr "" "Format error, can only contain letters (a-zA-Z), numbers (0-9) and half-" "width connectors (-), underscores (), spaces ( ) and dot(.)" -#: paasng/platform/smart_app/utils.py:54 paasng/platform/smart_app/utils.py:69 +#: paasng/platform/smart_app/services/app_desc.py:33 msgid "找不到任何有效的应用描述信息" msgstr "No valid APP descriptions found" -#: paasng/platform/smart_app/views.py:74 paasng/platform/smart_app/views.py:197 -#: paasng/platform/sourcectl/views.py:286 +#: paasng/platform/smart_app/services/detector.py:126 +#: paasng/platform/smart_app/services/detector.py:127 +msgid "应用描述文件内容不是有效 YAML 格式" +msgstr "The content of the app description file is not in valid YAML format" + +#: paasng/platform/smart_app/services/detector.py:168 +msgid "源码包文件格式错误,文件可能已经损坏" +msgstr "" + +#: paasng/platform/smart_app/views.py:77 paasng/platform/smart_app/views.py:212 +#: paasng/platform/sourcectl/views.py:284 msgid "请联系管理员" msgstr "Please contact administrator" -#: paasng/platform/smart_app/views.py:85 +#: paasng/platform/smart_app/views.py:88 msgid "你无法创建 SMart 应用" msgstr "You cannot create a S-mart APP" -#: paasng/platform/smart_app/views.py:128 +#: paasng/platform/smart_app/views.py:131 msgid "你无法创建 S-Mart 应用" msgstr "You cannot create a S-mart APP" -#: paasng/platform/smart_app/views.py:174 +#: paasng/platform/smart_app/views.py:142 +msgid "源码文件加载不完整,请重试或联系管理员" +msgstr "" + +#: paasng/platform/smart_app/views.py:180 #, python-brace-format msgid "应用ID: {appid} 的应用已存在!" msgstr "APP ID: {appid} of the APP already exists!" -#: paasng/platform/smart_app/views.py:219 +#: paasng/platform/smart_app/views.py:234 #, python-brace-format msgid "应用ID: {appid} 的应用不存在!" msgstr "APP ID: {appid} of the APP does not exist!" -#: paasng/platform/sourcectl/client.py:161 +#: paasng/platform/smart_app/views.py:297 +msgid "文件签名不一致" +msgstr "" + +#: paasng/platform/sourcectl/client.py:160 #, fuzzy #| msgid "工蜂请求失败" msgid "请求失败" msgstr "Tc_git request failed" -#: paasng/platform/sourcectl/client.py:180 +#: paasng/platform/sourcectl/client.py:179 #, fuzzy #| msgid "工蜂接口请求超时" msgid "接口请求超时" msgstr "Tc_git interface request timeout" -#: paasng/platform/sourcectl/client.py:183 +#: paasng/platform/sourcectl/client.py:182 #, fuzzy #| msgid "工蜂接口请求异常" msgid "接口请求异常" msgstr "Tc_git interface request exception" -#: paasng/platform/sourcectl/client.py:188 +#: paasng/platform/sourcectl/client.py:187 #, fuzzy #| msgid "解析 Github 接口返回结果失败" msgid "解析接口返回结果失败" msgstr "The Tc_git interface returns an exception and the result parsing fails" -#: paasng/platform/sourcectl/controllers/gitlab.py:146 +#: paasng/platform/sourcectl/controllers/gitlab.py:145 msgid "GitLab API 不支持名称包含 '.' 的分支,请修改分支名" msgstr "" "GitLab API does not support branches whose names contain '.', please modify " "the branch name" -#: paasng/platform/sourcectl/exceptions.py:70 +#: paasng/platform/sourcectl/exceptions.py:69 #, python-brace-format msgid "访问 Git<{fullname}> 项目异常" msgstr "Access to Git<{fullname}> project error" -#: paasng/platform/sourcectl/gitee/client.py:55 -#: paasng/platform/sourcectl/github/client.py:58 +#: paasng/platform/sourcectl/gitee/client.py:54 +#: paasng/platform/sourcectl/github/client.py:57 msgid "当前仅支持 base64 编码格式" msgstr "Only base64 encoding format is supported" -#: paasng/platform/sourcectl/models.py:234 +#: paasng/platform/sourcectl/models.py:232 msgid "容器镜像仓库" msgstr "Image repository" -#: paasng/platform/sourcectl/models.py:597 +#: paasng/platform/sourcectl/models.py:602 msgid "服务名称" msgstr "" -#: paasng/platform/sourcectl/svn/admin.py:111 +#: paasng/platform/sourcectl/svn/admin.py:110 #, python-format msgid "SVN注册服务异常, 状态码: %s" msgstr "SVN registration service exception, status code: %s" @@ -2988,60 +3216,60 @@ msgstr "The Tc_git interface returns an exception and the result parsing fails" msgid "工蜂请求失败" msgstr "Tc_git request failed" -#: paasng/platform/sourcectl/type_specs.py:50 +#: paasng/platform/sourcectl/type_specs.py:49 msgid "蓝鲸 SVN" msgstr "BlueKing SVN" -#: paasng/platform/sourcectl/type_specs.py:52 +#: paasng/platform/sourcectl/type_specs.py:51 msgid "蓝鲸 SVN 服务" msgstr "BlueKing SVN" -#: paasng/platform/sourcectl/type_specs.py:53 +#: paasng/platform/sourcectl/type_specs.py:52 msgid "(蓝鲸平台提供的源码托管服务)" msgstr "(Source code hosting service provided by BlueKing)" -#: paasng/platform/sourcectl/type_specs.py:73 +#: paasng/platform/sourcectl/type_specs.py:72 #, fuzzy #| msgid "GitLab 服务" msgid "GitHub 服务" msgstr "GitLab Services" -#: paasng/platform/sourcectl/type_specs.py:74 +#: paasng/platform/sourcectl/type_specs.py:73 msgid "开源社区 GitHub" msgstr "" -#: paasng/platform/sourcectl/type_specs.py:86 +#: paasng/platform/sourcectl/type_specs.py:85 msgid "Gitee 服务" msgstr "" -#: paasng/platform/sourcectl/type_specs.py:87 +#: paasng/platform/sourcectl/type_specs.py:86 msgid "开源社区 Gitee" msgstr "" -#: paasng/platform/sourcectl/type_specs.py:98 -#: paasng/platform/sourcectl/type_specs.py:100 +#: paasng/platform/sourcectl/type_specs.py:97 +#: paasng/platform/sourcectl/type_specs.py:99 msgid "Git 代码库" msgstr "Git repository" -#: paasng/platform/sourcectl/type_specs.py:101 -#: paasng/platform/sourcectl/type_specs.py:115 +#: paasng/platform/sourcectl/type_specs.py:100 +#: paasng/platform/sourcectl/type_specs.py:114 msgid "(需要提供账号、密码等信息)" msgstr "(need to provide account and password information)" -#: paasng/platform/sourcectl/type_specs.py:112 -#: paasng/platform/sourcectl/type_specs.py:114 +#: paasng/platform/sourcectl/type_specs.py:111 +#: paasng/platform/sourcectl/type_specs.py:113 msgid "SVN 代码库" msgstr "SVN repository" -#: paasng/platform/sourcectl/type_specs.py:144 +#: paasng/platform/sourcectl/type_specs.py:143 msgid "腾讯工蜂服务" msgstr " tc_git Services" -#: paasng/platform/sourcectl/type_specs.py:145 +#: paasng/platform/sourcectl/type_specs.py:144 msgid "(腾讯内部 Git 源码托管系统)" msgstr "(Tencent's Git source code hosting system)" -#: paasng/platform/sourcectl/views.py:113 +#: paasng/platform/sourcectl/views.py:111 #, python-brace-format msgid "" "您的蓝鲸{region}开发账户, SVN账号是{account}, 密码是:{password}, 请妥善保" @@ -3050,30 +3278,30 @@ msgstr "" "Your BlueKing {region} development account, SVN account is {account}, " "password is: {password}, please keep it safe" -#: paasng/platform/sourcectl/views.py:206 +#: paasng/platform/sourcectl/views.py:204 msgid "用户未关联 oauth 授权" msgstr "User not associated with oauth authorization" -#: paasng/platform/sourcectl/views.py:233 +#: paasng/platform/sourcectl/views.py:231 msgid "当前 AccessToken 无法获取到仓库列表,请检查后重试" msgstr "" "The current AccessToken cannot get the warehouse list, please check and try " "again" -#: paasng/platform/sourcectl/views.py:235 +#: paasng/platform/sourcectl/views.py:233 msgid "访问源码仓库失败,请联系项目管理员" msgstr "" "Failed to access the source code repository, please contact the administrator" -#: paasng/platform/sourcectl/views.py:351 +#: paasng/platform/sourcectl/views.py:349 msgid "无引擎应用不支持切换源码类型" msgstr "APP do not support switching source code types" -#: paasng/platform/sourcectl/views.py:364 +#: paasng/platform/sourcectl/views.py:362 msgid "不支持切换到蓝鲸 SVN 仓库" msgstr "Switching to Blueking SVN repository is not supported" -#: paasng/platform/sourcectl/views.py:372 +#: paasng/platform/sourcectl/views.py:370 msgid "请稍候再试" msgstr "Please try again later" @@ -3106,75 +3334,75 @@ msgstr "{source_type} source code does not currently support packaging" msgid "{module} 的仓库信息查询异常" msgstr "The warehouse information query of {module} is abnormal" -#: paasng/platform/templates/constants.py:26 +#: paasng/platform/templates/constants.py:25 msgid "普通应用" msgstr "" -#: paasng/platform/templates/constants.py:27 +#: paasng/platform/templates/constants.py:26 msgid "场景模板" msgstr "" -#: paasng/platform/templates/constants.py:28 +#: paasng/platform/templates/constants.py:27 msgid "插件模板" msgstr "" -#: paasng/platform/templates/models.py:43 +#: paasng/platform/templates/models.py:42 msgid "模板类型" msgstr "" -#: paasng/platform/templates/models.py:44 +#: paasng/platform/templates/models.py:43 msgid "展示用名称" msgstr "" -#: paasng/platform/templates/models.py:45 +#: paasng/platform/templates/models.py:44 msgid "模板描述" msgstr "" -#: paasng/platform/templates/models.py:46 +#: paasng/platform/templates/models.py:45 msgid "开发语言" msgstr "" -#: paasng/platform/templates/models.py:47 +#: paasng/platform/templates/models.py:46 msgid "能否发布到应用集市" msgstr "" -#: paasng/platform/templates/models.py:48 +#: paasng/platform/templates/models.py:47 msgid "预设增强服务配置" msgstr "" -#: paasng/platform/templates/models.py:49 +#: paasng/platform/templates/models.py:48 msgid "不同版本二进制包存储路径" msgstr "" -#: paasng/platform/templates/models.py:50 +#: paasng/platform/templates/models.py:49 msgid "允许被使用的版本" msgstr "" -#: paasng/platform/templates/models.py:51 +#: paasng/platform/templates/models.py:50 msgid "必须的构建工具" msgstr "" -#: paasng/platform/templates/models.py:52 +#: paasng/platform/templates/models.py:51 #, fuzzy #| msgid "更新进程配置" msgid "进程配置" msgstr "update process configuration" -#: paasng/platform/templates/models.py:53 +#: paasng/platform/templates/models.py:52 msgid "标签" msgstr "" -#: paasng/platform/templates/models.py:54 +#: paasng/platform/templates/models.py:53 #, fuzzy #| msgid "当前源码仓库信息异常" msgid "代码仓库信息" msgstr "The current source code repository information is abnormal" -#: paasng/platform/templates/models.py:55 +#: paasng/platform/templates/models.py:54 msgid "运行时类型" msgstr "" -#: paasng/platform/templates/views.py:59 +#: paasng/platform/templates/views.py:58 #, python-brace-format msgid "模板名称: {tmpl_name}" msgstr "" @@ -3201,14 +3429,40 @@ msgstr "Already under review, please do not repeat your APP" msgid "提交申请成功" msgstr "Submitted successfully" -#: paasng/utils/api_docs.py:29 +#: paasng/settings/__init__.py:816 +msgid "蓝鲸权限中心旧版地址,建议切换为 BKPAAS_IAM_URL" +msgstr "BlueKing old permission center URL, recommended to switch to BKPAAS_IAM_URL" + +#: paasng/settings/__init__.py:820 +msgid "蓝鲸权限中心的应用ID" +msgstr "BlueKing permission center APP ID" + +#: paasng/settings/__init__.py:824 +msgid "蓝鲸权限中心内网访问地址,建议切换为 BKPAAS_IAM_URL" +msgstr "BlueKing permission center intranet access URL, recommended to switch to BKPAAS_IAM_URL" + +#: paasng/settings/__init__.py:826 +msgid "蓝鲸配置平台访问地址,建议切换为 BKPAAS_CC_URL" +msgstr "BlueKing configuration platform access URL, recommended to switch to BKPAAS_CC_URL" + +#: paasng/settings/__init__.py:827 +msgid "蓝鲸作业平台访问地址,建议切换为 BKPAAS_JOB_URL" +msgstr "BlueKing job platform access URL, recommended to switch to BKPAAS_JOB_URL" + +#: paasng/utils/api_docs.py:28 msgid "操作成功后的空响应" msgstr "Empty response after successful operation" -#: paasng/utils/error_codes.py:25 +#: paasng/utils/error_codes.py:24 msgid "发送通知消息失败,请稍候重试" msgstr "Failed to send notification message, please wait and try again" +#: paasng/utils/error_codes.py:25 +#, fuzzy +#| msgid "暂不支持该功能" +msgid "暂不支持发送通知" +msgstr "This feature is not supported at the moment" + #: paasng/utils/error_codes.py:27 msgid "应用应该至少拥有一个管理员" msgstr "The APP should have at least one admin" @@ -3417,225 +3671,262 @@ msgstr "APP not fully archive in new version of Developer Center" msgid "应用在旧版开发者中心未完全下架" msgstr "APP not fully archive from old Developer Center" +#: paasng/utils/error_codes.py:92 +#, fuzzy +#| msgid "应用迁移确认, 切换入口失败" +msgid "应用迁移失败" +msgstr "APP migration confirmed, Switching portal failed" + #: paasng/utils/error_codes.py:93 +msgid "应用回滚失败" +msgstr "" + +#: paasng/utils/error_codes.py:94 +#, fuzzy +#| msgid "应用迁移确认, 切换入口失败" +msgid "应用迁移确认失败" +msgstr "APP migration confirmed, Switching portal failed" + +#: paasng/utils/error_codes.py:96 msgid "查询下线信息失败" msgstr "Failed to check downline information" -#: paasng/utils/error_codes.py:94 +#: paasng/utils/error_codes.py:97 msgid "下线失败" msgstr "Failed to get offline" -#: paasng/utils/error_codes.py:96 +#: paasng/utils/error_codes.py:99 msgid "未满足应用市场服务开启条件" msgstr "The conditions for opening the market service have not been met" -#: paasng/utils/error_codes.py:98 +#: paasng/utils/error_codes.py:101 msgid "应用资源 metrics 暂不支持" msgstr "Unable to fetch APP resources metrics" -#: paasng/utils/error_codes.py:99 +#: paasng/utils/error_codes.py:102 msgid "无法获取应用资源 metrics" msgstr "Unable to fetch APP resources metrics" -#: paasng/utils/error_codes.py:101 +#: paasng/utils/error_codes.py:104 msgid "初始化告警规则失败" msgstr "" -#: paasng/utils/error_codes.py:102 +#: paasng/utils/error_codes.py:105 msgid "查询告警失败" msgstr "" -#: paasng/utils/error_codes.py:103 +#: paasng/utils/error_codes.py:106 msgid "查询告警策略失败" msgstr "" -#: paasng/utils/error_codes.py:105 +#: paasng/utils/error_codes.py:108 msgid "无法更新独立域名" msgstr "Unable to update domain" -#: paasng/utils/error_codes.py:106 +#: paasng/utils/error_codes.py:109 msgid "无法添加独立域名" msgstr "Unable to add domain" -#: paasng/utils/error_codes.py:107 +#: paasng/utils/error_codes.py:110 msgid "无法删除独立域名" msgstr "Unable to delete domain" -#: paasng/utils/error_codes.py:109 +#: paasng/utils/error_codes.py:112 msgid "应用引擎未开启" msgstr "APP engine not turned on" -#: paasng/utils/error_codes.py:111 +#: paasng/utils/error_codes.py:114 msgid "访问量统计接口异常" msgstr "Exceptions to the access statistics interface" -#: paasng/utils/error_codes.py:112 +#: paasng/utils/error_codes.py:115 msgid "更新统计功能状态失败" msgstr "Failure to update the status of the statistics function" -#: paasng/utils/error_codes.py:114 +#: paasng/utils/error_codes.py:117 msgid "不是yaml文件" msgstr "Not a yaml file" -#: paasng/utils/error_codes.py:115 +#: paasng/utils/error_codes.py:118 msgid "文件格式错误" msgstr "Document format error" -#: paasng/utils/error_codes.py:117 +#: paasng/utils/error_codes.py:120 msgid "文档模板不存在" msgstr "Document template does not exist" -#: paasng/utils/error_codes.py:119 +#: paasng/utils/error_codes.py:122 msgid "没找到任何待创建的 S-mart 应用包" msgstr "No S-mart APP packages were found to be created" -#: paasng/utils/error_codes.py:120 +#: paasng/utils/error_codes.py:123 msgid "缺失应用描述文件" msgstr "Missing APP description file" -#: paasng/utils/error_codes.py:121 +#: paasng/utils/error_codes.py:124 msgid "分析应用描述文件异常" msgstr "Analyzing APP Description File Exceptions" -#: paasng/utils/error_codes.py:122 +#: paasng/utils/error_codes.py:125 msgid "访问容器镜像仓库异常" msgstr "Access to container image repository exception" -#: paasng/utils/error_codes.py:124 +#: paasng/utils/error_codes.py:126 +msgid "S-Mart 应用源码文件损坏" +msgstr "" + +#: paasng/utils/error_codes.py:128 msgid "无法获取用户凭证" msgstr "Unable to obtain user credentials" -#: paasng/utils/error_codes.py:126 +#: paasng/utils/error_codes.py:130 msgid "Oauth 后端类型无效" msgstr "Oauth back-end type invalid" -#: paasng/utils/error_codes.py:128 +#: paasng/utils/error_codes.py:132 msgid "暂不支持该功能" msgstr "This feature is not supported at the moment" -#: paasng/utils/error_codes.py:130 +#: paasng/utils/error_codes.py:134 msgid "请求第三方接口错误" msgstr "Request for third party interface error" -#: paasng/utils/error_codes.py:132 +#: paasng/utils/error_codes.py:136 msgid "云API相关接口路径错误" msgstr "Cloud API related interface path error" -#: paasng/utils/error_codes.py:133 +#: paasng/utils/error_codes.py:137 msgid "云API中Region对应的用户类型未配置" msgstr "" "The user type corresponding to the Region in the Cloud API is not configured" -#: paasng/utils/error_codes.py:136 +#: paasng/utils/error_codes.py:140 msgid "应用不是“蓝鲸插件”类型" msgstr "" -#: paasng/utils/error_codes.py:137 +#: paasng/utils/error_codes.py:141 msgid "无法设置插件使用方,请稍候重试" msgstr "Unable to set plug-in user, please wait and try again" -#: paasng/utils/error_codes.py:139 +#: paasng/utils/error_codes.py:143 #, fuzzy #| msgid "文档模板不存在" msgid "指定的应用模板不存在或不可用" msgstr "Document template does not exist" -#: paasng/utils/error_codes.py:140 +#: paasng/utils/error_codes.py:144 msgid "无效的应用模板" msgstr "" -#: paasng/utils/error_codes.py:142 +#: paasng/utils/error_codes.py:146 #, fuzzy #| msgid "文档模板不存在" msgid "指定的场景模板不存在" msgstr "Document template does not exist" -#: paasng/utils/error_codes.py:143 +#: paasng/utils/error_codes.py:147 #, fuzzy #| msgid "分析应用描述文件异常" msgid "场景模板应用描述文件异常" msgstr "Analyzing APP Description File Exceptions" -#: paasng/utils/error_codes.py:146 +#: paasng/utils/error_codes.py:150 msgid "创建蓝鲸运维开发平台应用错误" msgstr "" -#: paasng/utils/error_codes.py:149 +#: paasng/utils/error_codes.py:153 msgid "engine 服务错误" msgstr "engine service error" -#: paasng/utils/error_codes.py:152 +#: paasng/utils/error_codes.py:156 #, fuzzy #| msgid "初始化应用源码模板失败" msgid "初始化应用成员信息失败" msgstr "Failed to initialise APP source code template" -#: paasng/utils/error_codes.py:153 +#: paasng/utils/error_codes.py:157 msgid "添加应用成员失败" msgstr "" -#: paasng/utils/error_codes.py:154 +#: paasng/utils/error_codes.py:158 msgid "修改应用成员失败" msgstr "" -#: paasng/utils/error_codes.py:155 +#: paasng/utils/error_codes.py:159 #, fuzzy #| msgid "删除应用" msgid "删除应用成员失败" msgstr "Delete APP" -#: paasng/utils/error_codes.py:158 +#: paasng/utils/error_codes.py:162 msgid "指定环境的 Egress 配置不存在" msgstr "" -#: paasng/utils/error_codes.py:161 +#: paasng/utils/error_codes.py:165 msgid "因该功能正在升级改造,操作暂不可用。" msgstr "" "Operation is temporarily unavailable as this function is being upgraded." -#: paasng/utils/error_codes.py:162 +#: paasng/utils/error_codes.py:166 #, fuzzy #| msgid "暂不支持该功能" msgid "暂不支持修改该配置" msgstr "This feature is not supported at the moment" -#: paasng/utils/error_codes.py:177 +#: paasng/utils/error_codes.py:181 msgid "导入应用模型失败" msgstr "" -#: paasng/utils/error_message.py:92 +#: paasng/utils/error_message.py:91 #, python-brace-format msgid "错误码: {code_num}, {msg}" msgstr "Error code: {code_num}, {msg}" -#: paasng/utils/serializers.py:174 +#: paasng/utils/serializers.py:173 #, python-brace-format msgid "\"{input}\" is not a valid bytes." msgstr "" -#: paasng/utils/serializers.py:175 +#: paasng/utils/serializers.py:174 #, python-brace-format msgid "\"{input}\" is not a valid format, please startswith \"base64,\"" msgstr "" -#: paasng/utils/serializers.py:176 +#: paasng/utils/serializers.py:175 #, python-brace-format msgid "\"{input}\" is not a valid base64, please check it." msgstr "" -#: paasng/utils/views.py:44 +#: paasng/utils/views.py:43 msgid "参数格式错误" msgstr "Parameter format error" -#: tests/paasng/bk_plugins/pluginscenter/test_serializers.py:91 -#: tests/paasng/bk_plugins/pluginscenter/test_serializers.py:103 +#: tests/paasng/bk_plugins/pluginscenter/test_serializers.py:90 +#: tests/paasng/bk_plugins/pluginscenter/test_serializers.py:102 msgid "This value does not match the required pattern." msgstr "" -#: tests/paasng/platform/sourcectl/packages/test_utils.py:47 +#: tests/paasng/platform/sourcectl/packages/test_utils.py:46 msgid "zh-cn" msgstr "" +#~ msgid "image is missing" +#~ msgstr "image is missing" + +#, fuzzy +#~| msgid "请联系管理员" +#~ msgid "暂无可用集群, 请联系管理员" +#~ msgstr "Please contact administrator" + +#~ msgid "集群 {default_cluster_name} 未就绪, 请联系管理员" +#~ msgstr "" +#~ "Cluster {default_cluster_name} is not ready, please contact administrator" + +#, fuzzy +#~| msgid "容器镜像仓库" +#~ msgid "镜像地址" +#~ msgstr "Image repository" + #~ msgid "进程类型" #~ msgstr "Process Type" @@ -3729,9 +4020,6 @@ msgstr "" #~ msgid "自定义 time_range 时需要传入 start_time & end_time" #~ msgstr "Pass start_time & end_time to customize time_range" -#~ msgid "预发布" -#~ msgstr "stag env" - #~ msgid "生产" #~ msgstr "prod env" From 8cb8dd9df5856d5fc3675dce799ca4bb2fc4552d Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Mon, 15 Jul 2024 17:07:41 +0800 Subject: [PATCH 12/16] =?UTF-8?q?fix:=20pr=20=E8=AF=84=E8=AE=BA=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiserver/paasng/conf.yaml.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apiserver/paasng/conf.yaml.tpl b/apiserver/paasng/conf.yaml.tpl index 53650c540f..9f3e33ee05 100644 --- a/apiserver/paasng/conf.yaml.tpl +++ b/apiserver/paasng/conf.yaml.tpl @@ -308,7 +308,7 @@ # BK_TURBO_URL: '' ## 蓝盾流水线服务地址 # BK_PIPELINE_URL: '' -## 兼容 PaaS 2.0 注入的内置环境变量,格式如:{"BK_SOPS_URL": "http://localhost:8080"} +## 为兼容 PaaS 2.0 而注入的内置环境变量,格式如:{"BK_SOPS_URL": "http://localhost:8080"} # BK_PAAS2_PLATFORM_ENVS: {} ## 应用移动端访问地址,用于渲染模板与内置环境变量的配置项 From 2ddcf391ec8950278c68a664194a59911d981a3f Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Tue, 16 Jul 2024 10:09:55 +0800 Subject: [PATCH 13/16] fix: minor --- apiserver/paasng/paasng/core/region/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apiserver/paasng/paasng/core/region/app.py b/apiserver/paasng/paasng/core/region/app.py index cefe9f6e96..394747860c 100644 --- a/apiserver/paasng/paasng/core/region/app.py +++ b/apiserver/paasng/paasng/core/region/app.py @@ -54,7 +54,7 @@ def get_envs(self): for key in self.required_env_dict: value = self.region.get_built_in_config_var(key=key, env=self.app_env) if value: - result.update({key: {"value": value, "description": self.required_env_dict[key]}}) + result.update({key: {"value": value, "description": self.required_env_dict[key]["description"]}}) return result From 3121c6a9507c078c6edefac8900079347d07c4f9 Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Wed, 17 Jul 2024 15:30:38 +0800 Subject: [PATCH 14/16] =?UTF-8?q?fix:=20=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paasng/locale/en/LC_MESSAGES/django.mo | Bin 57047 -> 57307 bytes .../paasng/locale/en/LC_MESSAGES/django.po | 6 ++---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apiserver/paasng/locale/en/LC_MESSAGES/django.mo b/apiserver/paasng/locale/en/LC_MESSAGES/django.mo index e1c7e58709c27ae3bbf30046898b4195bdb3f21d..579f0ebe79341ed41ec9bdeb6ea2c5c7c7097c41 100644 GIT binary patch delta 12614 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 Date: Thu, 18 Jul 2024 12:41:22 +0800 Subject: [PATCH 15/16] =?UTF-8?q?feat:=20=E5=B0=86=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E7=BB=93=E6=9E=84=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiserver/paasng/paasng/core/region/app.py | 24 ++- .../engine/configurations/config_var.py | 203 ++++++++++++------ .../platform/engine/models/config_var.py | 19 +- .../paasng/platform/engine/views/configvar.py | 7 +- 4 files changed, 182 insertions(+), 71 deletions(-) diff --git a/apiserver/paasng/paasng/core/region/app.py b/apiserver/paasng/paasng/core/region/app.py index 394747860c..11b6b87c5e 100644 --- a/apiserver/paasng/paasng/core/region/app.py +++ b/apiserver/paasng/paasng/core/region/app.py @@ -14,6 +14,9 @@ # # We undertake not to change the open source license (MIT license) applicable # to the current version of the project delivered to anyone in the future. +from typing import List + +from paasng.platform.engine.models.config_var import BuiltInEnvVarDetail from .models import get_region @@ -44,17 +47,30 @@ class BuiltInEnvsRegionHelper: "FOO" whose value was set to "bar_stag". While in prod environment, the value is "bar_prod". """ - def __init__(self, region_name, app_env, required_env_dict): + def __init__(self, region_name, app_env, prefix, required_env_dict): + """ + :param app_env: application environment, such as stag,prod + :param prefix: environment variable prefix + :param required_env_dict: required environment variables, including key descriptions, need to be supplemented with corresponding values + """ self.region = get_region(region_name) self.app_env = app_env + self.prefix = prefix self.required_env_dict = required_env_dict - def get_envs(self): - result = {} + def get_envs(self) -> List[BuiltInEnvVarDetail]: + result = [] for key in self.required_env_dict: value = self.region.get_built_in_config_var(key=key, env=self.app_env) if value: - result.update({key: {"value": value, "description": self.required_env_dict[key]["description"]}}) + result.append( + BuiltInEnvVarDetail( + key=key, + prefix=self.prefix, + value=value, + description=self.required_env_dict[key]["description"], + ) + ) return result diff --git a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py index 3f14c563c0..2f385ce930 100644 --- a/apiserver/paasng/paasng/platform/engine/configurations/config_var.py +++ b/apiserver/paasng/paasng/platform/engine/configurations/config_var.py @@ -15,7 +15,7 @@ # to the current version of the project delivered to anyone in the future. """Config variables related functions""" -from typing import TYPE_CHECKING, Dict, Iterator +from typing import TYPE_CHECKING, Dict, Iterator, List from django.conf import settings from django.utils.translation import gettext_lazy as _ @@ -23,7 +23,7 @@ from paasng.accessories.publish.entrance.preallocated import get_bk_doc_url_prefix from paasng.accessories.servicehub.manager import mixed_service_mgr from paasng.accessories.servicehub.sharing import ServiceSharingManager -from paasng.core.region.app import BuiltInEnvsRegionHelper +from paasng.core.region.app import BuiltInEnvsRegionHelper, BuiltInEnvVarDetail from paasng.core.region.models import get_region from paasng.infras.oauth2.exceptions import BkOauthClientDoesNotExist from paasng.infras.oauth2.utils import get_oauth2_client_secret @@ -137,7 +137,7 @@ def generate_runtime_env_vars_for_app(engine_app: "EngineApp", config_vars_prefi def generate_env_vars_by_region_and_env( region: str, environment: str, config_vars_prefix: str -) -> Dict[str, Dict[str, str]]: +) -> List[BuiltInEnvVarDetail]: """Generate the platform address in the bk system by region and env""" # 需要按 region、env 写入不同值的变量 region_related_envs = { @@ -146,76 +146,151 @@ def generate_env_vars_by_region_and_env( "LOGIN_DOMAIN": {"description": _("蓝鲸统一登录服务域名")}, "APIGW_OAUTH_API_URL": {"description": _("蓝鲸 APIGW 提供的 OAuth 服务,不推荐使用")}, } - envs = BuiltInEnvsRegionHelper( - region_name=region, app_env=environment, required_env_dict=region_related_envs + region_envs_with_prefix = BuiltInEnvsRegionHelper( + region_name=region, + app_env=environment, + prefix=config_vars_prefix, + required_env_dict=region_related_envs, ).get_envs() # 微信内显示应用的静态资源地址前缀,从 PaaS2.0 上迁移过来的应用可能会用到 weixin_url = settings.BKPAAS_WEIXIN_URL_MAP.get(environment) - envs["WEIXIN_URL"] = {"value": weixin_url, "description": _("应用移动端访问地址,不推荐使用")} - envs["WEIXIN_REMOTE_STATIC_URL"] = { - "value": f"{weixin_url}/static_api/", - "description": _("应用移动端静态资源地址前缀,不推荐使用"), - } - - # 系统环境变量需要添加统一的前缀 - region_envs_with_prefix = add_prefix_to_key(envs, config_vars_prefix) + region_envs_with_prefix.extend( + [ + BuiltInEnvVarDetail( + key="WEIXIN_URL", + value=weixin_url, + description=_("应用移动端访问地址,不推荐使用"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="WEIXIN_REMOTE_STATIC_URL", + value=f"{weixin_url}/static_api/", + description=_("应用移动端静态资源地址前缀,不推荐使用"), + prefix=config_vars_prefix, + ), + ] + ) # 不需要写入兼容性的环境变量,则直接返回 region_container = get_region(region) if not region_container.provide_env_vars_platform: return region_envs_with_prefix - bk_envs = { - # 私有化版本目前 SaaS 用到了该环境变量,需要推动切换到 BKPAAS_LOGIN_URL 这个环境变量 - "BK_LOGIN_URL": { - "value": settings.LOGIN_FULL, - "description": _("蓝鲸统一登录访问地址,建议切换为 BKPAAS_LOGIN_URL"), - } - } - bk_envs.update(settings.BK_PAAS2_PLATFORM_ENVS) - return {**region_envs_with_prefix, **bk_envs} + region_envs_with_prefix.extend( + [ + # 私有化版本目前 SaaS 用到了该环境变量,需要推动切换到 BKPAAS_LOGIN_URL 这个环境变量 + BuiltInEnvVarDetail( + key="BK_LOGIN_URL", + value=settings.LOGIN_FULL, + description=_("蓝鲸统一登录访问地址,建议切换为 BKPAAS_LOGIN_URL"), + ) + ] + ) + for paas2_env_key, paas2_env_data in settings.BK_PAAS2_PLATFORM_ENVS.items(): + region_envs_with_prefix.append( + BuiltInEnvVarDetail( + key=paas2_env_key, value=paas2_env_data["value"], description=paas2_env_data["description"] + ) + ) + return region_envs_with_prefix -def generate_env_vars_for_bk_platform(config_vars_prefix: str) -> Dict[str, Dict[str, str]]: +def generate_env_vars_for_bk_platform(config_vars_prefix: str) -> List[BuiltInEnvVarDetail]: """Generate the platform address in the bk system""" - system_envs = { - "BK_DOMAIN": { - "value": settings.BK_DOMAIN, - "description": _("蓝鲸根域,用于获取登录票据、国际化语言等 cookie 信息"), - }, - "URL": {"value": settings.BKPAAS_URL, "description": _("蓝鲸PaaS平台访问URL")}, - # 蓝鲸体系内产品地址 - "CONSOLE_URL": {"value": settings.BK_CONSOLE_URL, "description": _("蓝鲸桌面访问地址")}, - "CC_URL": {"value": settings.BK_CC_URL, "description": _("蓝鲸配置平台访问地址")}, - "JOB_URL": {"value": settings.BK_JOB_URL, "description": _("蓝鲸作业平台访问地址")}, - "IAM_URL": {"value": settings.BK_IAM_URL, "description": _("蓝鲸权限中心访问地址")}, - "USER_URL": {"value": settings.BK_USER_URL, "description": _("蓝鲸用户管理访问地址")}, - "MONITORV3_URL": {"value": settings.BK_MONITORV3_URL, "description": _("蓝鲸监控平台访问地址")}, - "LOG_URL": {"value": settings.BK_LOG_URL, "description": _("蓝鲸日志平台访问地址")}, - "REPO_URL": {"value": settings.BK_REPO_URL, "description": _("蓝鲸制品库访问地址")}, - "CI_URL": {"value": settings.BK_CI_URL, "description": _("蓝鲸持续集成平台(蓝盾)访问地址")}, - "CODECC_URL": {"value": settings.BK_CODECC_URL, "description": _("蓝鲸代码检查平台访问地址")}, - "TURBO_URL": {"value": settings.BK_TURBO_URL, "description": _("蓝鲸编译加速平台访问地址")}, - "PIPELINE_URL": {"value": settings.BK_PIPELINE_URL, "description": _("蓝鲸流水线访问地址")}, - "SHARED_RES_URL": { - "value": settings.BK_SHARED_RES_URL, - "description": _("蓝鲸产品 title/footer/name/logo 等资源自定义配置的路径"), - }, - "BK_CRYPTO_TYPE": { - "value": settings.BK_CRYPTO_TYPE, - "description": _("加密数据库内容的推荐算法有:SHANGMI(对应 SM4CTR 算法)和 CLASSIC(对应 Fernet 算法)"), - }, - } - # 系统环境变量需要添加统一的前缀 - system_envs_with_prefix = add_prefix_to_key(system_envs, config_vars_prefix) + system_envs_with_prefix: List[BuiltInEnvVarDetail] = [ + BuiltInEnvVarDetail( + key="BK_DOMAIN", + value=settings.BK_DOMAIN, + description=_("蓝鲸根域,用于获取登录票据、国际化语言等 cookie 信息"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="URL", value=settings.BKPAAS_URL, description=_("蓝鲸PaaS平台访问URL"), prefix=config_vars_prefix + ), + BuiltInEnvVarDetail( + key="CONSOLE_URL", + value=settings.BK_CONSOLE_URL, + description=_("蓝鲸桌面访问地址"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="CC_URL", value=settings.BK_CC_URL, description=_("蓝鲸配置平台访问地址"), prefix=config_vars_prefix + ), + BuiltInEnvVarDetail( + key="JOB_URL", value=settings.BK_JOB_URL, description=_("蓝鲸作业平台访问地址"), prefix=config_vars_prefix + ), + BuiltInEnvVarDetail( + key="IAM_URL", value=settings.BK_IAM_URL, description=_("蓝鲸权限中心访问地址"), prefix=config_vars_prefix + ), + BuiltInEnvVarDetail( + key="USER_URL", + value=settings.BK_USER_URL, + description=_("蓝鲸用户管理访问地址"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="MONITORV3_URL", + value=settings.BK_MONITORV3_URL, + description=_("蓝鲸监控平台访问地址"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="LOG_URL", value=settings.BK_LOG_URL, description=_("蓝鲸日志平台访问地址"), prefix=config_vars_prefix + ), + BuiltInEnvVarDetail( + key="REPO_URL", value=settings.BK_REPO_URL, description=_("蓝鲸制品库访问地址"), prefix=config_vars_prefix + ), + BuiltInEnvVarDetail( + key="CI_URL", + value=settings.BK_CI_URL, + description=_("蓝鲸持续集成平台(蓝盾)访问地址"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="CODECC_URL", + value=settings.BK_CODECC_URL, + description=_("蓝鲸代码检查平台访问地址"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="TURBO_URL", + value=settings.BK_TURBO_URL, + description=_("蓝鲸编译加速平台访问地址"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="PIPELINE_URL", + value=settings.BK_PIPELINE_URL, + description=_("蓝鲸流水线访问地址"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="SHARED_RES_URL", + value=settings.BK_SHARED_RES_URL, + description=_("蓝鲸产品 title/footer/name/logo 等资源自定义配置的路径"), + prefix=config_vars_prefix, + ), + BuiltInEnvVarDetail( + key="BK_CRYPTO_TYPE", + value=settings.BK_CRYPTO_TYPE, + description=_("加密数据库内容的推荐算法有:SHANGMI(对应 SM4CTR 算法)和 CLASSIC(对应 Fernet 算法)"), + prefix=config_vars_prefix, + ), + ] # 兼容私有化版本保留的 BK_ 前缀的环境变量 - system_envs_with_prefix.update( - { - "BK_API_URL_TMPL": {"value": settings.BK_API_URL_TMPL, "description": _("网关 API 访问地址模板")}, - "BK_COMPONENT_API_URL": {"value": settings.BK_COMPONENT_API_URL, "description": _("组件 API 访问地址")}, - "BK_PAAS2_URL": {"value": settings.BK_PAAS2_URL, "description": _("PaaS2.0 开发者中心地址")}, - } + system_envs_with_prefix.extend( + [ + BuiltInEnvVarDetail( + key="BK_API_URL_TMPL", value=settings.BK_API_URL_TMPL, description=_("网关 API 访问地址模板") + ), + BuiltInEnvVarDetail( + key="BK_COMPONENT_API_URL", value=settings.BK_COMPONENT_API_URL, description=_("组件 API 访问地址") + ), + BuiltInEnvVarDetail( + key="BK_PAAS2_URL", value=settings.BK_PAAS2_URL, description=_("PaaS2.0 开发者中心地址") + ), + ] ) return system_envs_with_prefix @@ -262,13 +337,13 @@ def get_preset_env_variables(env: ModuleEnvironment) -> Dict[str, str]: return {item.key: item.value for item in qs if item.is_within_scope(ConfigVarEnvName(env.environment))} -def _flatten_envs(nested_envs: Dict[str, Dict[str, str]]) -> Dict[str, str]: +def _flatten_envs(nested_env_list: List[BuiltInEnvVarDetail]) -> Dict[str, str]: """将嵌套的环境变量字典转换为扁平的键值对格式 - 调用前:{"BK_CRYPTO_TYPE": {"value": settings.BK_CRYPTO_TYPE, "description": "这是一个变量描述")}} - 调用后:{"BK_CRYPTO_TYPE": settings.BK_CRYPTO_TYPE} + 调用前: [BuiltInEnvVarDetail(key="key1", value="value1", description="xxx"), BuiltInEnvVarDetail(key="key2", value="value2", description="xxx")] + 调用后: {"key1": "value1", "key2": "value2"} """ flat_envs = {} - for key, value in nested_envs.items(): - flat_envs[key] = value["value"] + for env in nested_env_list: + flat_envs[env.key] = env.value return flat_envs diff --git a/apiserver/paasng/paasng/platform/engine/models/config_var.py b/apiserver/paasng/paasng/platform/engine/models/config_var.py index caf1e3fe4d..49e5aa8bfc 100644 --- a/apiserver/paasng/paasng/platform/engine/models/config_var.py +++ b/apiserver/paasng/paasng/platform/engine/models/config_var.py @@ -14,8 +14,8 @@ # # We undertake not to change the open source license (MIT license) applicable # to the current version of the project delivered to anyone in the future. - -from typing import TYPE_CHECKING, Any, Dict +from dataclasses import dataclass, field +from typing import TYPE_CHECKING, Any, Dict, Optional from django.core.exceptions import ObjectDoesNotExist from django.db import models @@ -128,3 +128,18 @@ def clone_to(self, module: "Module") -> "ConfigVar": def add_prefix_to_key(items: dict, prefix: str) -> Dict[str, Any]: return {f"{prefix}{key}": value for key, value in items.items()} + + +@dataclass +class BuiltInEnvVarDetail: + key: str + value: str + description: Optional[str] + prefix: str = field(default="") + + def __post_init__(self): + if self.prefix: + self.key = f"{self.prefix}_{self.key}" + + def to_dict(self): + return {self.key: {"value": self.value, "description": self.description}} diff --git a/apiserver/paasng/paasng/platform/engine/views/configvar.py b/apiserver/paasng/paasng/platform/engine/views/configvar.py index 2e990598d6..2ab3439dac 100644 --- a/apiserver/paasng/paasng/platform/engine/views/configvar.py +++ b/apiserver/paasng/paasng/platform/engine/views/configvar.py @@ -142,6 +142,7 @@ def get_builtin_envs_for_app(self, request, code): def get_builtin_envs_bk_platform(self, request, code): bk_address_envs = generate_env_vars_for_bk_platform(settings.CONFIGVAR_SYSTEM_PREFIX) + bk_address_envs_list = [env.to_dict() for env in bk_address_envs] application = self.get_application() region = application.region @@ -150,8 +151,12 @@ def get_builtin_envs_bk_platform(self, request, code): envs_by_region_and_env = generate_env_vars_by_region_and_env( region, environment, settings.CONFIGVAR_SYSTEM_PREFIX ) + envs_by_region_and_env_list = [env.to_dict() for env in envs_by_region_and_env] - return Response({**bk_address_envs, **envs_by_region_and_env}) + builtin_envs_bk_platform = {} + for env_dict in bk_address_envs_list + envs_by_region_and_env_list: + builtin_envs_bk_platform.update(env_dict) + return Response(builtin_envs_bk_platform) def get_runtime_envs(self, request, code): env_dict = self._get_enum_choices_dict(AppRunTimeBuiltinEnv) From 3e96b933ecbc89c8764aaad898d78fcaf6444fdc Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Thu, 18 Jul 2024 13:27:23 +0800 Subject: [PATCH 16/16] fix: unitest --- apiserver/paasng/paasng/platform/engine/models/config_var.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apiserver/paasng/paasng/platform/engine/models/config_var.py b/apiserver/paasng/paasng/platform/engine/models/config_var.py index 49e5aa8bfc..3ca3ed7486 100644 --- a/apiserver/paasng/paasng/platform/engine/models/config_var.py +++ b/apiserver/paasng/paasng/platform/engine/models/config_var.py @@ -139,7 +139,7 @@ class BuiltInEnvVarDetail: def __post_init__(self): if self.prefix: - self.key = f"{self.prefix}_{self.key}" + self.key = f"{self.prefix}{self.key}" def to_dict(self): return {self.key: {"value": self.value, "description": self.description}}