@rancher/shell 0.3.15 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/assets/images/wechat-qr-code.jpg +0 -0
  2. package/assets/translations/en-us.yaml +70 -15
  3. package/assets/translations/zh-hans.yaml +155 -33
  4. package/chart/__tests__/S3.test.ts +50 -0
  5. package/chart/rancher-backup/S3.vue +21 -0
  6. package/chart/rancher-backup/index.vue +4 -0
  7. package/cloud-credential/generic.vue +1 -1
  8. package/components/BannerGraphic.vue +1 -0
  9. package/components/CommunityLinks.vue +1 -0
  10. package/components/CruResource.vue +1 -1
  11. package/components/EmberPage.vue +1 -0
  12. package/components/FileDiff.vue +92 -85
  13. package/components/GrafanaDashboard.vue +7 -1
  14. package/components/ResourceDetail/index.vue +4 -12
  15. package/components/ResourceList/index.vue +1 -1
  16. package/components/ResourceTable.vue +50 -2
  17. package/components/SimpleBox.vue +1 -0
  18. package/components/SortableTable/index.vue +5 -1
  19. package/components/YamlEditor.vue +1 -0
  20. package/components/auth/RoleDetailEdit.vue +1 -0
  21. package/components/form/GitPicker.vue +1 -1
  22. package/components/form/NameNsDescription.vue +28 -12
  23. package/components/form/NodeAffinity.vue +2 -2
  24. package/components/form/PodAffinity.vue +8 -3
  25. package/components/form/ResourceTabs/index.vue +8 -2
  26. package/components/form/Select.vue +16 -0
  27. package/components/form/__tests__/NodeAffinity.test.ts +38 -0
  28. package/components/form/__tests__/PodAffinity.test.ts +46 -0
  29. package/components/formatter/ClusterLink.vue +8 -4
  30. package/components/formatter/ImageName.vue +23 -0
  31. package/components/formatter/PodImages.vue +7 -1
  32. package/components/formatter/__tests__/ClusterLink.test.ts +101 -0
  33. package/components/nav/Header.vue +2 -2
  34. package/config/__test__/home-links.test.ts +62 -0
  35. package/config/home-links.js +15 -3
  36. package/config/labels-annotations.js +5 -1
  37. package/config/product/auth.js +1 -1
  38. package/config/router.js +0 -9
  39. package/config/settings.ts +4 -0
  40. package/config/table-headers.js +6 -5
  41. package/config/uiplugins.js +50 -5
  42. package/core/plugin-helpers.js +20 -12
  43. package/core/plugin.ts +9 -0
  44. package/core/plugins.js +1 -1
  45. package/core/types-provisioning.ts +253 -0
  46. package/core/types.ts +17 -3
  47. package/detail/autoscaling.horizontalpodautoscaler/index.vue +50 -1
  48. package/detail/catalog.cattle.io.clusterrepo.vue +8 -1
  49. package/detail/node.vue +6 -6
  50. package/detail/pod.vue +2 -6
  51. package/detail/provisioning.cattle.io.cluster.vue +46 -7
  52. package/detail/workload/index.vue +9 -9
  53. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +62 -0
  54. package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +56 -0
  55. package/edit/auth/github.vue +1 -0
  56. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +130 -0
  57. package/edit/autoscaling.horizontalpodautoscaler/index.vue +79 -0
  58. package/edit/fleet.cattle.io.gitrepo.vue +18 -1
  59. package/edit/monitoring.coreos.com.prometheusrule/index.vue +8 -3
  60. package/edit/namespace.vue +9 -1
  61. package/edit/networking.k8s.io.ingress/RulePath.vue +0 -2
  62. package/edit/provisioning.cattle.io.cluster/AgentConfiguration.vue +1 -30
  63. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +79 -1
  64. package/edit/provisioning.cattle.io.cluster/index.vue +52 -0
  65. package/edit/provisioning.cattle.io.cluster/rke2.vue +330 -150
  66. package/edit/ui.cattle.io.navlink.vue +2 -1
  67. package/initialize/App.js +3 -13
  68. package/initialize/layouts.ts +26 -0
  69. package/list/provisioning.cattle.io.cluster.vue +8 -1
  70. package/middleware/authenticated.js +93 -5
  71. package/mixins/brand.js +39 -3
  72. package/mixins/child-hook.js +2 -2
  73. package/mixins/create-edit-view/impl.js +2 -2
  74. package/models/fleet.cattle.io.gitrepo.js +1 -0
  75. package/models/provisioning.cattle.io.cluster.js +9 -1
  76. package/package.json +3 -3
  77. package/pages/about.vue +8 -2
  78. package/pages/auth/login.vue +10 -0
  79. package/pages/auth/logout.vue +11 -3
  80. package/pages/auth/setup.vue +4 -0
  81. package/pages/c/_cluster/apps/charts/index.vue +5 -2
  82. package/pages/c/_cluster/apps/charts/install.vue +5 -0
  83. package/pages/c/_cluster/auth/roles/index.vue +1 -1
  84. package/pages/c/_cluster/explorer/index.vue +1 -10
  85. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +177 -0
  86. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +19 -3
  87. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +90 -21
  88. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +107 -37
  89. package/pages/c/_cluster/uiplugins/index.vue +155 -44
  90. package/pages/docs/_doc.vue +9 -3
  91. package/pages/home.vue +10 -5
  92. package/pages/support/index.vue +10 -4
  93. package/pkg/auto-import.js +1 -1
  94. package/plugins/clean-tooltip-directive.js +1 -1
  95. package/plugins/dashboard-store/resource-class.js +35 -2
  96. package/plugins/plugin.js +9 -1
  97. package/plugins/steve/actions.js +22 -0
  98. package/rancher-components/BadgeState/BadgeState.vue +5 -1
  99. package/rancher-components/Banner/Banner.test.ts +51 -1
  100. package/rancher-components/Banner/Banner.vue +134 -53
  101. package/rancher-components/Card/Card.vue +24 -7
  102. package/rancher-components/Form/Checkbox/Checkbox.test.ts +20 -29
  103. package/rancher-components/Form/Checkbox/Checkbox.vue +45 -20
  104. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +2 -8
  105. package/rancher-components/Form/LabeledInput/LabeledInput.vue +22 -10
  106. package/rancher-components/Form/Radio/RadioButton.vue +30 -13
  107. package/rancher-components/Form/Radio/RadioGroup.vue +26 -7
  108. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +7 -6
  109. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +25 -38
  110. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +23 -11
  111. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +19 -5
  112. package/rancher-components/StringList/StringList.test.ts +453 -49
  113. package/rancher-components/StringList/StringList.vue +92 -58
  114. package/scripts/extension/publish +2 -2
  115. package/scripts/typegen.sh +1 -0
  116. package/server/server-middleware.js +4 -12
  117. package/store/index.js +13 -0
  118. package/store/prefs.js +0 -3
  119. package/store/type-map.js +17 -29
  120. package/types/shell/index.d.ts +243 -90
  121. package/utils/kube.js +9 -0
  122. package/utils/object.js +27 -0
  123. package/utils/settings.ts +2 -2
  124. package/vue.config.js +3 -2
  125. package/pages/safeMode.vue +0 -17
  126. package/rancher-components/components/BadgeState/BadgeState.spec.ts +0 -12
  127. package/rancher-components/components/BadgeState/BadgeState.vue +0 -111
  128. package/rancher-components/components/BadgeState/index.ts +0 -1
  129. package/rancher-components/components/Banner/Banner.test.ts +0 -63
  130. package/rancher-components/components/Banner/Banner.vue +0 -244
  131. package/rancher-components/components/Banner/index.ts +0 -1
  132. package/rancher-components/components/Card/Card.vue +0 -167
  133. package/rancher-components/components/Card/index.ts +0 -1
  134. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +0 -68
  135. package/rancher-components/components/Form/Checkbox/Checkbox.vue +0 -420
  136. package/rancher-components/components/Form/Checkbox/index.ts +0 -1
  137. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +0 -23
  138. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +0 -355
  139. package/rancher-components/components/Form/LabeledInput/index.ts +0 -1
  140. package/rancher-components/components/Form/Radio/RadioButton.vue +0 -287
  141. package/rancher-components/components/Form/Radio/RadioGroup.vue +0 -254
  142. package/rancher-components/components/Form/Radio/index.ts +0 -2
  143. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +0 -170
  144. package/rancher-components/components/Form/TextArea/index.ts +0 -1
  145. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +0 -94
  146. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +0 -149
  147. package/rancher-components/components/Form/ToggleSwitch/index.ts +0 -1
  148. package/rancher-components/components/Form/index.ts +0 -5
  149. package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +0 -151
  150. package/rancher-components/components/LabeledTooltip/index.ts +0 -1
  151. package/rancher-components/components/StringList/StringList.test.ts +0 -484
  152. package/rancher-components/components/StringList/StringList.vue +0 -611
  153. package/rancher-components/components/StringList/index.ts +0 -1
  154. /package/rancher-components/{components/Card → Card}/Card.test.ts +0 -0
  155. /package/rancher-components/{components/Form → Form}/Radio/RadioButton.test.ts +0 -0
Binary file
@@ -197,6 +197,12 @@ nav:
197
197
  accountAndKeys: Account & API Keys
198
198
  logOut: Log Out
199
199
  failWhale:
200
+ authMiddleware: Auth Middleware
201
+ clusterNotFound: Cluster { clusterId } not found
202
+ productNotFound: Product { productNotFound } not found
203
+ resourceNotFound: Resource type { resource } not found
204
+ resourceListNotFound: Resource type { resource } not found, unable to display list
205
+ resourceIdNotFound: Resource { resource } with id { fqid } not found, unable to display resource details
200
206
  reload: Reload
201
207
  separator: or
202
208
 
@@ -588,6 +594,10 @@ asyncButton:
588
594
  action: Apply
589
595
  success: Applied
590
596
  waiting: Applying…
597
+ add:
598
+ action: Add
599
+ success: Added
600
+ waiting: Adding…
591
601
  continue:
592
602
  action: Continue
593
603
  success: Saved
@@ -1332,7 +1342,6 @@ cluster:
1332
1342
  deprecated: (deprecated)
1333
1343
  deprecatedPatches: Show deprecated Kubernetes patch versions
1334
1344
  deprecatedPatchWarning: We recommend using the latest patch version for each minor Kubernetes version. Deprecated patch versions can be useful for migration purposes.
1335
- toolsTip: Use the new Cluster Tools to manage and install Monitoring, Logging and other tools
1336
1345
  legacyWarning: The legacy feature flag is enabled and not all legacy features are supported in Kubernetes 1.21+.
1337
1346
  log:
1338
1347
  connecting: Connecting…
@@ -2150,8 +2159,10 @@ fleet:
2150
2159
  protocolBanner: Enter a valid HTTPS or SSH URL to a git repository.
2151
2160
  resources:
2152
2161
  label: 'Resource Handling'
2153
- keepResources: Keep resources after deletion
2154
- resourceBanner: When enabled above, resources will be kept when deleting a GitRepo or Bundle - only Helm release secrets will be deleted.
2162
+ keepResources: Always Keep Resources
2163
+ keepResourcesBanner: When enabled above, resources will be kept when deleting a GitRepo or Bundle - only Helm release secrets will be deleted.
2164
+ correctDrift: Enable Self-Healing
2165
+ correctDriftBanner: When enabled, Fleet will ensure that the cluster resources are kept in sync with the git repository. All resource changes made on th ecluster will be lost.
2155
2166
  add:
2156
2167
  steps:
2157
2168
  repoInfo:
@@ -2390,11 +2401,32 @@ hpa:
2390
2401
  name:
2391
2402
  label: Referent Name
2392
2403
  placeholder: e.g. php-apache
2404
+ scaleDownRules:
2405
+ label: Scale down behavior
2406
+ enable: Configure scale down behavior
2407
+ scaleUpRules:
2408
+ label: Scale up behavior
2409
+ enable: Configure scale up behavior
2410
+ scalingRule:
2411
+ policyHeader: Policies
2412
+ addPolicy: Add policy
2413
+ selectPolicy: Select policy
2414
+ selectPolicyTooltip: Select the policy with the maximum value, minimum value or disable scaling.
2415
+ stabilizationWindowSeconds: Stabilization window seconds
2416
+ stabilizationWindowSecondsTooltip: Number of seconds for which past recommendations should be considered while scaling up or scaling down.
2417
+ policy:
2418
+ type: Type
2419
+ typeTooltip: Set policy based on the amount of Pods to scale or the percentage of current replicas to scale.
2420
+ value: Value
2421
+ valueTooltip: The amount of change which is permitted by the policy.
2422
+ periodSeconds: Period seconds
2423
+ periodSecondsTooltip: The window of time for which the policy should hold true.
2393
2424
  tabs:
2394
2425
  labels: Labels
2395
2426
  metrics: Metrics
2396
2427
  target: Target
2397
2428
  workload: Workload
2429
+ behavior: Behavior
2398
2430
  types:
2399
2431
  cpu: CPU
2400
2432
  memory: Memory
@@ -3021,6 +3053,9 @@ login:
3021
3053
  remember:
3022
3054
  label: Remember Username
3023
3055
 
3056
+ logout:
3057
+ message: Logging Out...
3058
+
3024
3059
  managementNode:
3025
3060
  customName: Custom Name
3026
3061
 
@@ -3989,7 +4024,9 @@ inactivity:
3989
4024
 
3990
4025
  # Rancher Extensions
3991
4026
  plugins:
3992
- incompatibleDisclaimer: "The latest version of this extension ({ version }) is not compatible with the current Rancher version ({ rancherVersion })."
4027
+ incompatibleRancherVersion: "The latest version of this extension ({ version }) is not compatible with the current Rancher version ({ rancherVersion })."
4028
+ incompatibleKubeVersion: "The latest version of this extension ({ version }) is not compatible with the current Kube version ({ kubeVersion })."
4029
+ currentInstalledVersionBlockedByKubeVersion: "This version is not compatible with the current Kubernetes version ({ kubeVersion } Vs { kubeVersionToCheck })."
3993
4030
  labels:
3994
4031
  builtin: Built-in
3995
4032
  experimental: Experimental
@@ -4026,7 +4063,8 @@ plugins:
4026
4063
  detail: Detail
4027
4064
  versions: Versions
4028
4065
  versionError: Could not load version information
4029
- requiresVersion: "Requires Rancher {version}"
4066
+ requiresRancherVersion: "Requires Rancher {version}"
4067
+ requiresKubeVersion: "Requires Kube version {version}"
4030
4068
  empty:
4031
4069
  all: Extensions are neither installed nor available
4032
4070
  available: No Extensions available
@@ -4036,6 +4074,7 @@ plugins:
4036
4074
  loadError: An error occurred loading the code for this extension
4037
4075
  helmError: "An error occurred installing the extension via Helm"
4038
4076
  manageRepos: Manage Repositories
4077
+ addRancherRepos: Add Rancher Repositories
4039
4078
  manageCharts: Manage Extension Charts
4040
4079
  manageCatalog:
4041
4080
  label: Manage Extension Catalogs
@@ -4107,23 +4146,39 @@ plugins:
4107
4146
  safeMode:
4108
4147
  title: Extensions Safe Mode
4109
4148
  message: Extensions were not loaded
4149
+ addRepos:
4150
+ banner: There are new extensions repositories available. To enable them, click the menu button at the top right of this page and select “Add Rancher Repositories”.
4151
+ bannerBtn: Add repositories
4152
+ title: Add Extensions repositories
4153
+ prompt: You can install multiple Rancher extension repositories to increase your extensions catalog
4110
4154
  setup:
4155
+ installed: Already installed
4156
+ uninstalled: Already uninstalled
4111
4157
  title: Extension support is not enabled
4112
4158
  prompt:
4113
4159
  cant: Automatic installation is not available - required Helm Charts could not be found
4114
4160
  can: You need to install the Extension Operator
4161
+ official: The Official Rancher Extensions Repository provides extensions published by Rancher
4162
+ partners: The Partners Extensions Repository provides extensions published by Rancher Partners
4163
+ community: The Community Extensions Repository provides extensions published by Rancher Community
4115
4164
  install:
4116
4165
  title: Enable Extension Support?
4117
- prompt: This will install the Helm charts to enable Extension support
4118
- airgap: The Rancher Extensions Repository provides extensions published by Rancher. Un-check if your Rancher installation is air-gapped
4119
- addRancherRepo: Add the Rancher Extension Repository
4166
+ prompt: This will install the Helm charts needed to enable Extension support
4167
+ airgap: Air-gapped installations should NOT enable this feature
4168
+ addRancherRepo: Add Official Rancher Extensions Repository
4169
+ addPartnersRancherRepo: Add Partners Extensions Repository
4170
+ addCommunityRancherRepo: Add Community Extension sRepository
4120
4171
  remove:
4121
4172
  label: Disable Extension Support
4122
4173
  title: Disable Extension Support?
4123
4174
  prompt: This will un-install the Helm charts that enable Extension support
4124
4175
  registry:
4125
- title: Remove the Rancher Extensions Repository
4126
- prompt: The Rancher Extensions Repository provides extensions published by Rancher
4176
+ official:
4177
+ title: Remove the Official Rancher Extensions Repository
4178
+ partners:
4179
+ title: Remove the Partners Extensions Repository
4180
+ community:
4181
+ title: Remove the Community Extensions Repository
4127
4182
  crd:
4128
4183
  title: Remove the Rancher Extensions Custom Resource Definition
4129
4184
  prompt: There are one or more extensions installed - removing the CRD will require you to manually reinstall these extensions if you subsequently re-enable extensions support.
@@ -4440,7 +4495,6 @@ rbac:
4440
4495
  members:
4441
4496
  label: Members
4442
4497
  roletemplate:
4443
- label: Roles
4444
4498
  newUserDefault:
4445
4499
  no: No
4446
4500
  tooltip: This does not affect any bindings to the role that already exist.
@@ -7324,6 +7378,7 @@ manager:
7324
7378
  label: Node Templates
7325
7379
 
7326
7380
  auth:
7381
+ roleTemplate: Role Templates
7327
7382
  config:
7328
7383
  label: Auth Provider
7329
7384
  vncConsole:
@@ -7356,7 +7411,7 @@ gitPicker:
7356
7411
  repo:
7357
7412
  label: Repository
7358
7413
  inputLabel: Repository
7359
- tooltip: Branch to deploy from
7414
+ tooltip: Repository to deploy from
7360
7415
  commits:
7361
7416
  label: Commits
7362
7417
  tooltip: Commits to deploy from
@@ -7367,7 +7422,7 @@ gitPicker:
7367
7422
  label: Commit Message
7368
7423
  errors:
7369
7424
  noAccount: No GitHub account or Organization found. Please review your query and try again.
7370
- noBranch: No branch found. Please review your query and try again."
7425
+ noBranch: No branch found. Please review your query and try again.
7371
7426
  gitlab:
7372
7427
  label: GitLab
7373
7428
  tableHeaders:
@@ -7393,7 +7448,7 @@ gitPicker:
7393
7448
  repo:
7394
7449
  label: Repository
7395
7450
  inputLabel: Repository
7396
- tooltip: Branch to deploy from
7451
+ tooltip: Repository to deploy from
7397
7452
  commits:
7398
7453
  label: Commits
7399
7454
  tooltip: Commits to deploy from
@@ -7404,7 +7459,7 @@ gitPicker:
7404
7459
  label: Commit Message
7405
7460
  errors:
7406
7461
  noAccount: No GitLab account or Organization found. Please review your query and try again.
7407
- noBranch: No branch found. Please review your query and try again."
7462
+ noBranch: No branch found. Please review your query and try again.
7408
7463
 
7409
7464
  networkAttachmentDefinition:
7410
7465
  tabs:
@@ -73,6 +73,7 @@ generic:
73
73
  techPreview: 技术预览
74
74
  type: 类型
75
75
  unknown: 未知
76
+ upload: 上传
76
77
  provisioning: '—'
77
78
  key: 键
78
79
  value: 值
@@ -117,6 +118,7 @@ locale:
117
118
  none: (None)
118
119
 
119
120
  nav:
121
+ harvesterDashboard: Harvester 仪表板
120
122
  backToRancher: Cluster Manager
121
123
  clusterTools: 集群工具
122
124
  kubeconfig:
@@ -179,6 +181,7 @@ nav:
179
181
  multiCluster: 全局应用
180
182
  legacy: 旧版应用
181
183
  configuration: 配置
184
+ hci: HCI
182
185
  search:
183
186
  placeholder: 输入关键词,搜索集群
184
187
  noResults: 没有匹配的集群
@@ -1282,9 +1285,6 @@ cluster:
1282
1285
  label: KubeconfigContent
1283
1286
  placeholder: '命名空间/名称'
1284
1287
  cluster: 导入的 Harvester 集群
1285
- affinity:
1286
- namespaces:
1287
- placeholder: 例如:default,system,base
1288
1288
  installGuestAgent: 安装访客代理
1289
1289
  description:
1290
1290
  label: 集群描述
@@ -1340,7 +1340,6 @@ cluster:
1340
1340
  deprecated: (已弃用)
1341
1341
  deprecatedPatches: 显示已弃用的 Kubernetes 补丁版本
1342
1342
  deprecatedPatchWarning: 建议为每个 Kubernetes 次要版本使用最新的补丁版本,已弃用的补丁版本可能对迁移有用。
1343
- toolsTip: 使用新集群工具来管理和安装 Monitoring、Logging 等工具。
1344
1343
  legacyWarning: 旧版功能开关已开启,但是不是所有旧版功能都在 Kubernetes 1.21+ 中支持。
1345
1344
  log:
1346
1345
  connecting: 正在连接
@@ -2240,6 +2239,7 @@ fleet:
2240
2239
  addLabel: 添加
2241
2240
  banner: "{count, plural, =0 { 在这里添加命名空间会创建一个 GitRepoRestriction。} other { 只有 Git Repo Restriction 的 <code>allowedTargetNamespaces</code> 在此处管理,你可以对 Git Repo Restriction 进行其他更改。} }"
2242
2241
  footer:
2242
+ cnforums: 中文社区
2243
2243
  docs: Rancher 官方文档
2244
2244
  download: 下载 CLI
2245
2245
  forums: 论坛
@@ -2247,7 +2247,8 @@ footer:
2247
2247
  slack: Slack 讨论群
2248
2248
  wechat:
2249
2249
  title: 微信
2250
- modalText: 扫码关注 Rancher 中国微信技术群
2250
+ modalText: 扫描二维码添加 Rancher 小助手
2251
+ modalText2: 加入 Rancher 官方微信群
2251
2252
 
2252
2253
  gatekeeperConstraint:
2253
2254
  downloadViolations: 下载违规
@@ -3997,17 +3998,19 @@ inactivity:
3997
3998
 
3998
3999
  # Rancher Extensions
3999
4000
  plugins:
4000
- incompatibleDisclaimer: "此扩展的最新版本 ({ version }) 与当前的 Rancher 版本 ({ rancherVersion }) 不兼容。"
4001
+ incompatibleRancherVersion: "此扩展的最新版本 ({ version }) 与当前的 Rancher 版本 ({ rancherVersion }) 不兼容。"
4001
4002
  labels:
4002
4003
  builtin: 内置角色
4003
4004
  experimental: 实验功能
4004
4005
  third-party: 第三方
4006
+ image: 镜像
4005
4007
  installing: 正在安装...
4006
4008
  uninstalling: 正在卸载...
4007
4009
  descriptions:
4008
4010
  experimental: 这是实验性扩展
4009
4011
  third-party: 此扩展由第三方提供
4010
4012
  built-in: 这是内置扩展
4013
+ image: 已手动加载此扩展镜像
4011
4014
  error:
4012
4015
  title: 加载扩展时出错
4013
4016
  message: 无法加载扩展代码
@@ -4016,6 +4019,7 @@ plugins:
4016
4019
  host: 此扩展与此应用程序不兼容
4017
4020
  version: 此扩展与此 Rancher 版本不兼容
4018
4021
  load: 加载此扩展的代码时出错
4022
+ developerPkg: 此扩展已在内部加载,因此我们不会加载外部版本
4019
4023
  success:
4020
4024
  title: 已加载扩展 {name}
4021
4025
  message: 扩展加载成功
@@ -4031,18 +4035,59 @@ plugins:
4031
4035
  detail: 详情
4032
4036
  versions: 版本
4033
4037
  versionError: 无法加载版本信息
4034
- requiresVersion: "需要 Rancher {version}"
4038
+ requiresRancherVersion: "需要 Rancher {version}"
4035
4039
  empty:
4036
4040
  all: 扩展未安装或不可用
4037
4041
  available: 没有可用的扩展
4038
4042
  installed: 没有已安装的扩展
4039
4043
  updates: 没有可用于已安装扩展的更新
4044
+ images: 未安装扩展镜像
4040
4045
  loadError: 加载此扩展的代码时出错
4041
4046
  helmError: "通过 Helm 安装扩展时出错"
4042
4047
  manageRepos: 管理仓库
4048
+ manageCharts: 管理扩展 Chart
4049
+ manageCatalog:
4050
+ label: 管理扩展商店
4051
+ title: 扩展
4052
+ subtitle: 应用商店
4053
+ imageLoad:
4054
+ load: 导入扩展商店
4055
+ prompt: 扩展商店包含了打包在镜像中的扩展资产,导入将获取该镜像,并托管一个 Helm 仓库来作为自定义构建扩展的商店。
4056
+ fields:
4057
+ image:
4058
+ label: 商店镜像参考
4059
+ placeholder: "例如:hub.docker.io/example-org/my-image:latest"
4060
+ secrets:
4061
+ banner: "如果托管目录镜像的仓库需要拉取 Secret,则必须在以下命名空间中创建它们:<pre>cattle-ui-plugin-system</pre>"
4062
+ banner: 这将创建 Deployment、Service 和 Helm 仓库来服务扩展 Chart。
4063
+ imageVersion:
4064
+ title: 找不到镜像版本
4065
+ message: 无法通过 {image} 确定镜像版本,默认为 latest
4066
+ error:
4067
+ exists:
4068
+ deployment:
4069
+ title: 部署冲突
4070
+ message: 使用 {image} 镜像的容器已存在
4071
+ service:
4072
+ title: Service 冲突
4073
+ message: 名称为 {svc} 的 Service 已存在
4074
+ repo:
4075
+ title: Helm 仓库冲突
4076
+ message: 名称为 {repo} 的仓库已存在
4077
+ success:
4078
+ title: "导入的扩展商店来自:{name}"
4079
+ message: 已成功导入扩展商店镜像
4080
+ headers:
4081
+ image:
4082
+ name: 镜像
4083
+ label: Deployment 镜像
4084
+ cacheState:
4085
+ name: cacheState
4086
+ label: 缓存状态
4043
4087
  tabs:
4044
4088
  all: 全部
4045
4089
  available: 可用
4090
+ images: 镜像
4046
4091
  installed: 已安装
4047
4092
  updates: 更新
4048
4093
  title: 扩展
@@ -4065,6 +4110,7 @@ plugins:
4065
4110
  label: 卸载
4066
4111
  title: "卸载扩展 {name}"
4067
4112
  prompt: "确定要卸载此扩展吗?"
4113
+ custom: "确定要卸载此扩展镜像吗?此镜像提供的扩展也将被删除。"
4068
4114
  upgradeAvailable: 此扩展有可用的版本更新
4069
4115
  reload: 扩展已更改 - 需要重新加载
4070
4116
  safeMode:
@@ -4403,7 +4449,6 @@ rbac:
4403
4449
  members:
4404
4450
  label: 成员
4405
4451
  roletemplate:
4406
- label: 角色
4407
4452
  newUserDefault:
4408
4453
  no: 否
4409
4454
  tooltip: 不影响已有角色的绑定。
@@ -4599,8 +4644,8 @@ resourceList:
4599
4644
  create: 创建
4600
4645
  createFromYaml: 使用 YAML 文件创建
4601
4646
  createResource: "创建 {resourceName}"
4602
- nsFiltering: "{resource} 太多。<br>请通过选择上面的命名空间进行过滤。"
4603
- nsFilterToolTip: "资源太多,过滤仅限于单一 {mode}。"
4647
+ nsFiltering: "请使用上面的过滤器选择一个或多个命名空间或项目。"
4648
+ nsFilterToolTip: "仅限于过滤项目和命名空间"
4604
4649
  resourceLoadingIndicator:
4605
4650
  loading: 正在加载
4606
4651
 
@@ -4811,20 +4856,13 @@ servicesPage:
4811
4856
  title: 附加配置
4812
4857
  ipam:
4813
4858
  label: IPAM
4814
- healthCheckPort:
4815
- label: 健康检查端口
4816
- healthCheckSuccessThreshold:
4817
- label: 健康检查成功阙值
4818
- description: 如果探针连续检测到某个地址的成功次数达到成功阈值,后端服务器就可以开始转发流量。
4819
- healthCheckFailureThreshold:
4820
- label: 健康检查失败阈值
4821
- description: 如果健康检查失败的数量达到失败阈值,后端服务器将停止转发流量。
4822
- healthCheckPeriod:
4823
- label: 健康检查周期
4824
- healthCheckTimeout:
4825
- label: 健康检查超时
4826
- healthCheckEnabled:
4827
- label: 健康检查
4859
+ useShareIP:
4860
+ label: 使用共享 IP
4861
+ useIpam:
4862
+ label: 使用 IPAM
4863
+ shareIP:
4864
+ label: 共享 IP LB
4865
+
4828
4866
  ips:
4829
4867
  define: 服务端口
4830
4868
  clusterIpHelpText: 集群 IP 地址必须在为 API server 配置的 CIDR 范围内。
@@ -5557,8 +5595,8 @@ validation:
5557
5595
  tooLongPrefix: '"{key}" 前缀的长度不能超过 {max} 个字符'
5558
5596
  minLength: '"{key}" 必须多于 {min} 个字符'
5559
5597
  maxLength: '"{key}" 必须少于 {max} 个字符'
5560
- minValue: '"{key}" 必须多于 {min}'
5561
- maxValue: '"{key}" 必须小于 {max}'
5598
+ minValue: '"{key}" 必须等于或多于 {min}'
5599
+ maxValue: '"{key}" 必须等于或少于 {max}'
5562
5600
  betweenLengths: '"{key}" 必须包含 {min} 到 {max} 个字符'
5563
5601
  betweenValues: '"{key}" 必须介于 {min} 和 {max} 之间'
5564
5602
  noSchema: 没有找到可以验证的 schema
@@ -6035,7 +6073,7 @@ workload:
6035
6073
  noExecute: 不执行
6036
6074
  noSchedule: "不调度"
6037
6075
  preferNoSchedule: 倾向于不调度
6038
- labelKey: 标签键
6076
+ labelKey:
6039
6077
  operator: 运算符
6040
6078
  operatorOptions:
6041
6079
  equal: =
@@ -6373,6 +6411,11 @@ typeLabel:
6373
6411
  one { 集群成员 }
6374
6412
  other { 集群成员 }
6375
6413
  }
6414
+ projectroletemplatebinding: |-
6415
+ {count, plural,
6416
+ one { 项目成员 }
6417
+ other { 项目成员 }
6418
+ }
6376
6419
  management.cattle.io.feature: |-
6377
6420
  {count, plural,
6378
6421
  one { 功能开关 }
@@ -7012,6 +7055,7 @@ performance:
7012
7055
  启用后,资源会更快出现,但可能需要更长的时间来加载整个资源集。此设置仅适用于来自 Kubernetes API 的资源
7013
7056
  checkboxLabel: 启用增量加载
7014
7057
  inputLabel: 资源阈值
7058
+ incompatibleDescription: "增量加载与命名空间/项目过滤不兼容,无法同时启用。"
7015
7059
  manualRefresh:
7016
7060
  label: 手动刷新
7017
7061
  setting: 你可以配置一个阈值,高于该阈值时则启用手动刷新。
@@ -7020,6 +7064,7 @@ performance:
7020
7064
  启用后,列表数据不会自动更新,用户必须手动刷新列表视图。此设置仅适用于来自 Kubernetes API 的资源
7021
7065
  checkboxLabel: 启用列表数据的手动刷新
7022
7066
  inputLabel: 资源阈值
7067
+ incompatibleDescription: "手动刷新与命名空间/项目过滤不兼容,无法同时启用。"
7023
7068
  websocketNotification:
7024
7069
  label: WebSocket 通知
7025
7070
  description: |-
@@ -7047,12 +7092,10 @@ performance:
7047
7092
  description: 资源必须超过此数量才能考虑进行垃圾回收。
7048
7093
  inputLabel: 资源数量
7049
7094
  nsFiltering:
7050
- label: 命名空间过滤
7051
- description: 当列表无法显示太多资源时,用户需要选择一个命名空间并仅提取该命名空间中的资源。
7052
- checkboxLabel: 启用命名空间过滤
7053
- count:
7054
- inputLabel: 资源阈值
7055
- description: 需要按命名空间过滤的阈值
7095
+ label: 要求命名空间/项目过滤
7096
+ description: 用户需要选择命名空间和/或项目。这将限制查看列表时获取的资源数量,有助于在具有大量资源的系统中提高 UI 的响应速度。
7097
+ checkboxLabel: 启用要求命名空间/项目过滤
7098
+ incompatibleDescription: "\"要求命名空间/项目过滤\"与手动刷新和增量加载不兼容,无法同时启用。"
7056
7099
  advancedWorker:
7057
7100
  label: Websocket Web Worker
7058
7101
  description: 推送到 UI 的资源更新来自 WebSocket,并在 UI 线程中处理。启用此选项可在单独的线程中处理 Web Worker 中的集群 WebSocket 更新。这有助于提高 UI 在资源经常变化的系统中的响应能力。
@@ -7147,6 +7190,7 @@ resourceQuota:
7147
7190
  resourceType: 资源类型
7148
7191
  helpText: 配置整个命名空间可用的资源量。
7149
7192
  helpTextDetail: 整个命名空间可以使用的资源量。
7193
+ helpTextHarvester: VM 需要预留额外的内存。
7150
7194
  configMaps: ConfigMaps
7151
7195
  limitsCpu: CPU 限制
7152
7196
  limitsMemory: 内存限制
@@ -7195,6 +7239,7 @@ customLinks:
7195
7239
  valueLabel: URL
7196
7240
  showLabel: 显示
7197
7241
  defaults:
7242
+ cnforums: 中文社区
7198
7243
  docs: Rancher 官方文档
7199
7244
  forums: 论坛
7200
7245
  slack: Slack
@@ -7298,6 +7343,7 @@ manager:
7298
7343
  label: 节点模板
7299
7344
 
7300
7345
  auth:
7346
+ roleTemplate: 角色模板
7301
7347
  config:
7302
7348
  label: 认证
7303
7349
  vncConsole:
@@ -7549,6 +7595,82 @@ charts:
7549
7595
  label: 7 层负载均衡主机名
7550
7596
  description: "7 层负载均衡主机名"
7551
7597
 
7598
+ gitPicker:
7599
+ github:
7600
+ label: GitHub
7601
+ tableHeaders:
7602
+ choose:
7603
+ label: 选择
7604
+ sha:
7605
+ label: SHA
7606
+ author:
7607
+ label: 作者
7608
+ unknown: 未知
7609
+ message:
7610
+ label: 消息
7611
+ date:
7612
+ label: 日期
7613
+ username:
7614
+ label: 用户名/组织
7615
+ inputLabel: 用户名/组织
7616
+ tooltip: Git 仓库的用户名/组织
7617
+ branch:
7618
+ label: 分支
7619
+ inputLabel: 分支
7620
+ tooltip: 要部署的分支
7621
+ repo:
7622
+ label: 仓库
7623
+ inputLabel: 仓库
7624
+ tooltip: 要部署的仓库
7625
+ commits:
7626
+ label: Commit
7627
+ tooltip: 要部署的 Commit
7628
+ commit:
7629
+ label: Commit
7630
+ inputLabel: Commit
7631
+ commitMessage:
7632
+ label: Commit Message
7633
+ errors:
7634
+ noAccount: 未找到 GitHub 帐户或组织。请检查你的查询并重试。
7635
+ noBranch: 未找到分支。请检查你的查询并重试。
7636
+ gitlab:
7637
+ label: GitLab
7638
+ tableHeaders:
7639
+ choose:
7640
+ label: 选择
7641
+ sha:
7642
+ label: SHA
7643
+ author:
7644
+ label: 作者
7645
+ unknown: 未知
7646
+ message:
7647
+ label: 消息
7648
+ date:
7649
+ label: 日期
7650
+ username:
7651
+ label: 用户名/组织
7652
+ inputLabel: 用户名/组织
7653
+ tooltip: Git 仓库的用户名/组织
7654
+ branch:
7655
+ label: 分支
7656
+ inputLabel: 分支
7657
+ tooltip: 要部署的分支
7658
+ repo:
7659
+ label: 仓库
7660
+ inputLabel: 仓库
7661
+ tooltip: 要部署的仓库
7662
+ commits:
7663
+ label: Commit
7664
+ tooltip: 要部署的 Commit
7665
+ commit:
7666
+ label: Commit
7667
+ inputLabel: Commit
7668
+ commitMessage:
7669
+ label: Commit Message
7670
+ errors:
7671
+ noAccount: 未找到 GitLab 帐户或组织。请检查你的查询并重试。
7672
+ noBranch: 未找到分支。请检查你的查询并重试。
7673
+
7552
7674
  networkAttachmentDefinition:
7553
7675
  tabs:
7554
7676
  config: 配置
@@ -0,0 +1,50 @@
1
+ /* eslint-disable jest/no-hooks */
2
+ import { mount, createLocalVue } from '@vue/test-utils';
3
+
4
+ import S3 from '@shell/chart/rancher-backup/S3';
5
+ import Vuex from 'vuex';
6
+
7
+ const localVue = createLocalVue();
8
+
9
+ localVue.use(Vuex);
10
+
11
+ describe('rancher-backup: S3', () => {
12
+ const mockStore = { getters: { 'i18n/t': (text: string) => text, t: (text: string) => text } };
13
+ const wrapper = mount(S3, { mocks: { $store: mockStore } });
14
+
15
+ it('should emit invalid when form is not filled', () => {
16
+ expect(wrapper.emitted('valid')).toHaveLength(1);
17
+ expect(wrapper.emitted('valid')![0][0]).toBeFalsy();
18
+ });
19
+
20
+ it('should emit valid when required fields are filled', async() => {
21
+ const bucketName = wrapper.find('[data-testid="S3-bucketName"]').find('input');
22
+ const endpoint = wrapper.find('[data-testid="S3-endpoint"]').find('input');
23
+ const testCases = [
24
+ {
25
+ bucketNameInput: 'val',
26
+ endpointInput: '',
27
+ result: false
28
+ },
29
+ {
30
+ bucketNameInput: '',
31
+ endpointInput: 'val',
32
+ result: false
33
+ }
34
+ ];
35
+
36
+ for (const testCase of testCases) {
37
+ bucketName.setValue(testCase.bucketNameInput);
38
+ endpoint.setValue(testCase.endpointInput);
39
+ await wrapper.vm.$nextTick();
40
+ expect(wrapper.emitted('valid')).toHaveLength(1);
41
+ expect(wrapper.emitted('valid')![0][0]).toBe(false);
42
+ }
43
+
44
+ bucketName.setValue('val1');
45
+ endpoint.setValue('val2');
46
+ await wrapper.vm.$nextTick();
47
+ expect(wrapper.emitted('valid')).toHaveLength(2);
48
+ expect(wrapper.emitted('valid')![1][0]).toBe(true);
49
+ });
50
+ });
@@ -4,6 +4,7 @@ import { Checkbox } from '@components/Form/Checkbox';
4
4
  import FileSelector from '@shell/components/form/FileSelector';
5
5
  import LabeledSelect from '@shell/components/form/LabeledSelect';
6
6
  import { mapGetters } from 'vuex';
7
+
7
8
  export default {
8
9
  components: {
9
10
  LabeledInput,
@@ -30,6 +31,19 @@ export default {
30
31
  }
31
32
  },
32
33
 
34
+ mounted() {
35
+ this.$emit('valid', this.valid);
36
+ },
37
+
38
+ beforeDestroy() {
39
+ this.$emit('valid', true);
40
+ },
41
+
42
+ watch: {
43
+ valid() {
44
+ this.$emit('valid', this.valid);
45
+ }
46
+ },
33
47
  computed: {
34
48
  credentialSecret: {
35
49
  get() {
@@ -45,6 +59,9 @@ export default {
45
59
  this.$set(this.value, 'credentialSecretNamespace', namespace);
46
60
  }
47
61
  },
62
+ valid() {
63
+ return !!this.value.endpoint && !!this.value.bucketName;
64
+ },
48
65
  ...mapGetters({ t: 'i18n/t' })
49
66
  },
50
67
 
@@ -87,8 +104,10 @@ export default {
87
104
  <div class="col span-6">
88
105
  <LabeledInput
89
106
  v-model="value.bucketName"
107
+ data-testid="S3-bucketName"
90
108
  :mode="mode"
91
109
  :label="t('backupRestoreOperator.s3.bucketName')"
110
+ required
92
111
  />
93
112
  </div>
94
113
  </div>
@@ -114,6 +133,8 @@ export default {
114
133
  v-model="value.endpoint"
115
134
  :mode="mode"
116
135
  :label="t('backupRestoreOperator.s3.endpoint')"
136
+ data-testid="S3-endpoint"
137
+ required
117
138
  />
118
139
  <Checkbox
119
140
  v-model="value.insecureTLSSkipVerify"