@rancher/shell 0.2.5 → 0.3.1

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 (635) hide show
  1. package/assets/styles/global/_button.scss +5 -1
  2. package/assets/styles/global/_columns.scss +4 -0
  3. package/assets/styles/global/_layout.scss +1 -2
  4. package/assets/styles/global/_select.scss +1 -4
  5. package/assets/styles/themes/_dark.scss +8 -4
  6. package/assets/styles/themes/_light.scss +9 -3
  7. package/assets/styles/themes/_suse.scss +1 -1
  8. package/assets/styles/vendor/vue-select.scss +4 -3
  9. package/assets/translations/en-us.yaml +682 -74
  10. package/assets/translations/zh-hans.yaml +554 -170
  11. package/chart/istio.vue +1 -1
  12. package/chart/monitoring/grafana/index.vue +1 -1
  13. package/chart/monitoring/index.vue +1 -1
  14. package/chart/monitoring/prometheus/index.vue +4 -4
  15. package/chart/monitoring/steps/uninstall-v1.vue +2 -2
  16. package/cloud-credential/azure.vue +23 -0
  17. package/cloud-credential/harvester.vue +25 -62
  18. package/cloud-credential/pnap.vue +80 -0
  19. package/components/AdvancedSection.vue +9 -2
  20. package/components/Alert.vue +2 -2
  21. package/components/AlertTable.vue +1 -1
  22. package/components/AssignTo.vue +1 -1
  23. package/components/AsyncButton.vue +2 -2
  24. package/components/BrandImage.vue +1 -1
  25. package/components/ButtonDropdown.vue +0 -2
  26. package/components/ButtonGroup.vue +2 -1
  27. package/components/ClusterProviderIcon.vue +2 -2
  28. package/components/Collapse.vue +6 -2
  29. package/components/CollapsibleCard.vue +2 -3
  30. package/components/ConsumptionGauge.vue +4 -4
  31. package/components/ContainerResourceLimit.vue +1 -1
  32. package/components/CountBox.vue +1 -1
  33. package/components/CountGauge.vue +1 -1
  34. package/components/CruResource.vue +43 -5
  35. package/components/DashboardMetrics.vue +2 -2
  36. package/components/DetailTop.vue +58 -3
  37. package/components/DisableAuthProviderModal.vue +106 -0
  38. package/components/DraggableZone.vue +181 -0
  39. package/components/ExplorerMembers.vue +253 -30
  40. package/components/ExplorerProjectsNamespaces.vue +82 -38
  41. package/components/FixedBanner.vue +6 -6
  42. package/components/GlobalRoleBindings.vue +6 -6
  43. package/components/GradientBox.vue +2 -2
  44. package/components/GrowlManager.vue +3 -3
  45. package/components/IconMessage.vue +4 -4
  46. package/components/IconOrSvg.vue +149 -0
  47. package/components/Import.vue +5 -5
  48. package/components/InputOrDisplay.vue +1 -1
  49. package/components/KeyValueView.vue +1 -1
  50. package/components/LabelValue.vue +1 -1
  51. package/components/LogItem.vue +69 -0
  52. package/components/ModalWithCard.vue +1 -1
  53. package/components/MoveModal.vue +1 -1
  54. package/components/PercentageBar.vue +2 -2
  55. package/components/PodSecurityAdmission.vue +302 -0
  56. package/components/PromptChangePassword.vue +1 -1
  57. package/components/PromptModal.vue +2 -1
  58. package/components/PromptRemove.vue +2 -2
  59. package/components/PromptRestore.vue +13 -13
  60. package/components/Questions/Question.js +1 -1
  61. package/components/ResourceCancelModal.vue +3 -3
  62. package/components/ResourceDetail/Masthead.vue +55 -3
  63. package/components/ResourceDetail/index.vue +12 -5
  64. package/components/ResourceList/Masthead.vue +12 -2
  65. package/components/ResourceList/ResourceLoadingIndicator.vue +12 -2
  66. package/components/ResourceList/index.vue +53 -12
  67. package/components/ResourceList/resource-list.config.js +7 -0
  68. package/components/ResourceSummary.vue +4 -4
  69. package/components/ResourceTable.vue +31 -6
  70. package/components/RoleBindings.vue +19 -19
  71. package/components/SimpleBox.vue +6 -2
  72. package/components/SingleClusterInfo.vue +5 -5
  73. package/components/SortableTable/THead.vue +20 -6
  74. package/components/SortableTable/actions.js +4 -2
  75. package/components/SortableTable/index.vue +30 -19
  76. package/components/SortableTable/selection.js +2 -2
  77. package/components/Tabbed/index.vue +20 -15
  78. package/components/TableSparkLine.vue +1 -1
  79. package/components/TypeDescription.vue +1 -1
  80. package/components/Wizard.vue +1 -1
  81. package/components/YamlEditor.vue +6 -6
  82. package/components/__tests__/ApplicationCard.test.ts +27 -0
  83. package/components/__tests__/AsyncButton.test.ts +140 -0
  84. package/components/__tests__/BackLink.test.ts +33 -0
  85. package/components/__tests__/ButtonGroup.test.ts +124 -0
  86. package/components/__tests__/ClusterBadge.test.ts +32 -0
  87. package/components/__tests__/Collapse.spec.ts +44 -0
  88. package/components/__tests__/CollapsibleCard.test.ts +64 -0
  89. package/components/__tests__/ConsumptionGauge.test.ts +88 -0
  90. package/components/__tests__/CruResource.test.ts +6 -5
  91. package/components/__tests__/FixedBanner.test.ts +129 -0
  92. package/components/__tests__/GrowlManager.test.ts +147 -0
  93. package/components/__tests__/NamespaceFilter.test.ts +221 -0
  94. package/components/__tests__/PercentageBar.test.ts +32 -0
  95. package/components/__tests__/PodSecurityAdmission.test.ts +398 -0
  96. package/components/__tests__/SimpleBox.spec.ts +28 -0
  97. package/components/auth/AuthBanner.vue +20 -10
  98. package/components/auth/RoleDetailEdit.vue +41 -30
  99. package/components/auth/SelectPrincipal.vue +45 -5
  100. package/components/auth/login/ldap.vue +3 -0
  101. package/components/cards/ApplicationCard.vue +10 -5
  102. package/components/fleet/FleetBundleResources.vue +8 -8
  103. package/components/fleet/FleetClusters.vue +10 -10
  104. package/components/fleet/FleetRepos.vue +5 -5
  105. package/components/fleet/FleetResources.vue +6 -6
  106. package/components/fleet/FleetSummary.vue +5 -5
  107. package/components/fleet/ResourcesSummary.vue +1 -1
  108. package/components/form/ArrayList.vue +3 -35
  109. package/components/form/ArrayListGrouped.vue +14 -5
  110. package/components/form/ArrayListSelect.vue +8 -8
  111. package/components/form/BannerSettings.vue +6 -6
  112. package/components/form/ChangePassword.vue +3 -3
  113. package/components/form/Error.vue +10 -2
  114. package/components/form/FileSelector.vue +3 -3
  115. package/components/form/Footer.vue +1 -1
  116. package/components/form/GithubPicker.vue +4 -4
  117. package/components/form/KeyValue.vue +41 -9
  118. package/components/form/LabeledSelect.vue +5 -2
  119. package/components/form/Labels.vue +46 -16
  120. package/components/form/MatchExpressions.vue +1 -1
  121. package/components/form/Members/ClusterPermissionsEditor.vue +28 -28
  122. package/components/form/Members/MembershipEditor.vue +14 -14
  123. package/components/form/NameNsDescription.vue +1 -1
  124. package/components/form/NodeAffinity.vue +1 -1
  125. package/components/form/NodeScheduling.vue +1 -1
  126. package/components/form/Password.vue +3 -3
  127. package/components/form/PodAffinity.vue +1 -1
  128. package/components/form/Probe.vue +3 -3
  129. package/components/form/ProjectMemberEditor.vue +1 -1
  130. package/components/form/ResourceQuota/Project.vue +6 -6
  131. package/components/form/ResourceQuota/shared.js +12 -12
  132. package/components/form/ResourceTabs/index.vue +1 -6
  133. package/components/form/SecretSelector.vue +1 -1
  134. package/components/form/Security.vue +8 -7
  135. package/components/form/Select.vue +7 -2
  136. package/components/form/SelectOrCreateAuthSecret.vue +22 -29
  137. package/components/form/ServicePorts.vue +8 -0
  138. package/components/form/SimpleSecretSelector.vue +1 -1
  139. package/components/form/Taints.vue +1 -1
  140. package/components/form/UnitInput.vue +7 -7
  141. package/components/form/ValueFromResource.vue +1 -1
  142. package/components/form/WorkloadPorts.vue +8 -2
  143. package/components/form/__tests__/ArrayList.test.ts +74 -0
  144. package/components/form/__tests__/ArrayListGrouped.test.ts +6 -4
  145. package/components/formatter/AppSummaryGraph.vue +4 -4
  146. package/components/formatter/BadgeStateFormatter.vue +2 -2
  147. package/components/formatter/Checked.vue +2 -2
  148. package/components/formatter/ClusterLink.vue +8 -3
  149. package/components/formatter/Date.vue +1 -1
  150. package/components/formatter/DelayedValue.vue +1 -1
  151. package/components/formatter/Endpoints.vue +1 -1
  152. package/components/formatter/FleetSummaryGraph.vue +4 -4
  153. package/components/formatter/IconIsDefault.vue +3 -3
  154. package/components/formatter/IconText.vue +4 -4
  155. package/components/formatter/ImagePercentageBar.vue +4 -4
  156. package/components/formatter/IngressFullPath.vue +1 -1
  157. package/components/formatter/InternalExternalIP.vue +11 -8
  158. package/components/formatter/LinkDetail.vue +3 -3
  159. package/components/formatter/List.vue +1 -1
  160. package/components/formatter/ListLink.vue +1 -1
  161. package/components/formatter/ListLinkDetail.vue +1 -1
  162. package/components/formatter/LiveDate.vue +3 -3
  163. package/components/formatter/LiveDuration.vue +78 -0
  164. package/components/formatter/LivePodRestarts.vue +1 -1
  165. package/components/formatter/Number.vue +1 -1
  166. package/components/formatter/Percentage.vue +2 -2
  167. package/components/formatter/PercentageBar.vue +3 -3
  168. package/components/formatter/PodImages.vue +1 -1
  169. package/components/formatter/Principal.vue +1 -1
  170. package/components/formatter/PrincipalGroupBindings.vue +2 -2
  171. package/components/formatter/QualityText.vue +1 -1
  172. package/components/formatter/ReceiverIcons.vue +2 -2
  173. package/components/formatter/Scale.vue +1 -1
  174. package/components/formatter/ScanResult.vue +1 -1
  175. package/components/formatter/SecretData.vue +1 -1
  176. package/components/formatter/ServiceType.vue +1 -1
  177. package/components/formatter/Shortened.vue +1 -1
  178. package/components/formatter/VerticalScroll.vue +2 -2
  179. package/components/formatter/VirtualServiceGateways.vue +3 -3
  180. package/components/formatter/Weight.vue +2 -2
  181. package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
  182. package/components/formatter/WorkloadHealthScale.vue +7 -5
  183. package/components/formatter/__tests__/Date.test.ts +60 -0
  184. package/components/formatter/__tests__/LinkDetail.test.ts +72 -0
  185. package/components/formatter/__tests__/LiveDate.test.ts +84 -0
  186. package/components/formatter/__tests__/Si.test.ts +35 -0
  187. package/components/graph/LinePlot.vue +1 -1
  188. package/components/graph/ProgressArc.vue +5 -5
  189. package/components/nav/GlobalLoading.vue +1 -1
  190. package/components/nav/Header.vue +6 -4
  191. package/components/nav/Jump.vue +3 -3
  192. package/components/nav/NamespaceFilter.vue +200 -68
  193. package/components/nav/TopLevelMenu.vue +24 -21
  194. package/components/nav/Type.vue +1 -1
  195. package/components/nav/WindowManager/ChartReadme.vue +1 -1
  196. package/components/nav/WindowManager/ContainerLogs.vue +84 -127
  197. package/components/nav/WindowManager/ContainerShell.vue +28 -7
  198. package/components/nav/WindowManager/KubectlShell.vue +6 -6
  199. package/components/nav/WindowManager/MachineSsh.vue +1 -1
  200. package/components/nav/WindowManager/Window.vue +2 -0
  201. package/components/nav/WindowManager/index.vue +206 -25
  202. package/config/elemental-types.js +9 -0
  203. package/config/features.js +2 -0
  204. package/config/home-links.js +4 -1
  205. package/config/labels-annotations.js +19 -19
  206. package/config/pod-security-admission.ts +82 -0
  207. package/config/product/apps.js +5 -5
  208. package/config/product/auth.js +22 -21
  209. package/config/product/cis.js +24 -24
  210. package/config/product/explorer.js +25 -24
  211. package/config/product/fleet.js +7 -7
  212. package/config/product/gatekeeper.js +7 -7
  213. package/config/product/istio.js +7 -7
  214. package/config/product/legacy.js +21 -21
  215. package/config/product/logging.js +90 -90
  216. package/config/product/manager.js +19 -15
  217. package/config/product/monitoring.js +36 -36
  218. package/config/product/multi-cluster-apps.js +24 -24
  219. package/config/product/settings.js +42 -42
  220. package/config/secret.js +0 -1
  221. package/config/settings.ts +39 -22
  222. package/config/table-headers.js +70 -52
  223. package/config/types.js +11 -8
  224. package/config/uiplugins.js +4 -4
  225. package/content/docs/zh-hans/getting-started.md +113 -137
  226. package/content/docs/zh-hans/whats-new.md +8 -46
  227. package/creators/app/app.package.json +4 -1
  228. package/creators/app/{.eslintignore → files/.eslintignore} +0 -0
  229. package/creators/app/{.eslintrc.js → files/.eslintrc.js} +0 -0
  230. package/creators/app/{.vscode → files/.vscode}/settings.json +0 -0
  231. package/creators/app/{babel.config.js → files/babel.config.js} +0 -0
  232. package/creators/app/{nuxt.config.js → files/nuxt.config.js} +0 -0
  233. package/creators/app/{tsconfig.json → files/tsconfig.json} +2 -1
  234. package/creators/app/init +16 -17
  235. package/creators/app/package.json +7 -1
  236. package/creators/pkg/{babel.config.js → files/babel.config.js} +0 -0
  237. package/creators/pkg/{index.ts → files/index.ts} +0 -0
  238. package/creators/pkg/{tsconfig.json → files/tsconfig.json} +13 -12
  239. package/creators/pkg/{vue.config.js → files/vue.config.js} +0 -0
  240. package/creators/pkg/init +1 -1
  241. package/creators/pkg/package.json +2 -2
  242. package/creators/update/init +56 -0
  243. package/creators/update/package.json +20 -0
  244. package/creators/update/upgrade +56 -0
  245. package/detail/catalog.cattle.io.app.vue +1 -1
  246. package/detail/cis.cattle.io.clusterscan.vue +6 -6
  247. package/detail/configmap.vue +1 -1
  248. package/detail/constraints.gatekeeper.sh.constraint.vue +1 -1
  249. package/detail/fleet.cattle.io.bundle.vue +5 -5
  250. package/detail/fleet.cattle.io.gitrepo.vue +5 -5
  251. package/detail/helm.cattle.io.projecthelmchart.vue +1 -1
  252. package/detail/management.cattle.io.user.vue +3 -3
  253. package/detail/namespace.vue +13 -13
  254. package/detail/node.vue +2 -2
  255. package/detail/pod.vue +2 -2
  256. package/detail/provisioning.cattle.io.cluster.vue +47 -10
  257. package/detail/secret.vue +2 -2
  258. package/detail/service.vue +2 -9
  259. package/detail/workload/index.vue +1 -2
  260. package/dialog/AddClusterMemberDialog.vue +23 -29
  261. package/dialog/AddCustomBadgeDialog.vue +4 -4
  262. package/dialog/AddProjectMemberDialog.vue +81 -30
  263. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  264. package/dialog/DiagnosticTimingsDialog.vue +9 -8
  265. package/dialog/DrainNode.vue +56 -60
  266. package/dialog/ForceMachineRemoveDialog.vue +6 -8
  267. package/dialog/GenericPrompt.vue +16 -21
  268. package/dialog/RollbackWorkloadDialog.vue +22 -53
  269. package/dialog/RotateCertificatesDialog.vue +9 -11
  270. package/dialog/RotateEncryptionKeyDialog.vue +6 -10
  271. package/dialog/SaveAsRKETemplateDialog.vue +6 -14
  272. package/dialog/ScaleMachineDownDialog.vue +2 -2
  273. package/dialog/ScalePoolDownDialog.vue +121 -0
  274. package/edit/__tests__/management.cattle.io.setting.test.ts +4 -4
  275. package/edit/auth/azuread.vue +18 -18
  276. package/edit/auth/github.vue +10 -2
  277. package/edit/auth/googleoauth.vue +10 -1
  278. package/edit/auth/ldap/index.vue +14 -4
  279. package/edit/auth/oidc.vue +13 -3
  280. package/edit/auth/saml.vue +14 -4
  281. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +2 -2
  282. package/edit/autoscaling.horizontalpodautoscaler/index.vue +1 -1
  283. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +1 -1
  284. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  285. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +2 -2
  286. package/edit/cis.cattle.io.clusterscan.vue +2 -2
  287. package/edit/cloudcredential.vue +3 -7
  288. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -1
  289. package/edit/fleet.cattle.io.clustergroup.vue +3 -3
  290. package/edit/fleet.cattle.io.gitrepo.vue +9 -9
  291. package/edit/group.principal.vue +2 -2
  292. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  293. package/edit/logging-flow/Match.vue +39 -8
  294. package/edit/logging-flow/index.vue +28 -5
  295. package/edit/logging.banzaicloud.io.output/providers/datadog.vue +1 -1
  296. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  297. package/edit/logging.banzaicloud.io.output/providers/gcs.vue +1 -1
  298. package/edit/logging.banzaicloud.io.output/providers/gelf.vue +1 -1
  299. package/edit/logging.banzaicloud.io.output/providers/kafka.vue +1 -1
  300. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  301. package/edit/logging.banzaicloud.io.output/providers/loki.vue +1 -1
  302. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +213 -0
  303. package/edit/logging.banzaicloud.io.output/providers/redis.vue +142 -0
  304. package/edit/logging.banzaicloud.io.output/providers/s3.vue +1 -1
  305. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  306. package/edit/logging.banzaicloud.io.output/providers/syslog.vue +1 -1
  307. package/edit/management.cattle.io.fleetworkspace.vue +1 -1
  308. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +107 -0
  309. package/edit/management.cattle.io.project.vue +11 -4
  310. package/edit/management.cattle.io.projectroletemplatebinding.vue +5 -5
  311. package/edit/management.cattle.io.setting.vue +6 -3
  312. package/edit/management.cattle.io.user.vue +11 -5
  313. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +33 -17
  314. package/edit/monitoring.coreos.com.alertmanagerconfig/tls.vue +1 -1
  315. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  316. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +5 -5
  317. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +3 -3
  318. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +3 -3
  319. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +4 -4
  320. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +14 -6
  321. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  322. package/edit/monitoring.coreos.com.receiver/index.vue +1 -1
  323. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  324. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +1 -1
  325. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +1 -1
  326. package/edit/monitoring.coreos.com.receiver/types/webhook.vue +1 -1
  327. package/edit/monitoring.coreos.com.route.vue +1 -1
  328. package/edit/namespace.vue +18 -4
  329. package/edit/networking.istio.io.destinationrule/LoadBalancer.vue +1 -1
  330. package/edit/networking.k8s.io.ingress/Certificate.vue +1 -0
  331. package/edit/networking.k8s.io.ingress/Certificates.vue +3 -3
  332. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  333. package/edit/networking.k8s.io.ingress/IngressClass.vue +9 -7
  334. package/edit/networking.k8s.io.ingress/Rule.vue +1 -1
  335. package/edit/networking.k8s.io.ingress/RulePath.vue +17 -11
  336. package/edit/networking.k8s.io.ingress/Rules.vue +7 -7
  337. package/edit/networking.k8s.io.ingress/index.vue +8 -6
  338. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +1 -1
  339. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  340. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +1 -1
  341. package/edit/networking.k8s.io.networkpolicy/index.vue +5 -5
  342. package/edit/persistentvolume/index.vue +30 -27
  343. package/edit/persistentvolume/plugins/awsElasticBlockStore.vue +1 -1
  344. package/edit/persistentvolume/plugins/azureDisk.vue +1 -1
  345. package/edit/persistentvolume/plugins/azureFile.vue +1 -1
  346. package/edit/persistentvolume/plugins/cephfs.vue +31 -31
  347. package/edit/persistentvolume/plugins/cinder.vue +1 -1
  348. package/edit/persistentvolume/plugins/csi.vue +104 -64
  349. package/edit/persistentvolume/plugins/fc.vue +21 -21
  350. package/edit/persistentvolume/plugins/flexVolume.vue +2 -2
  351. package/edit/persistentvolume/plugins/flocker.vue +1 -1
  352. package/edit/persistentvolume/plugins/gcePersistentDisk.vue +1 -1
  353. package/edit/persistentvolume/plugins/glusterfs.vue +1 -1
  354. package/edit/persistentvolume/plugins/hostPath.vue +1 -1
  355. package/edit/persistentvolume/plugins/iscsi.vue +47 -47
  356. package/edit/persistentvolume/plugins/local.vue +1 -1
  357. package/edit/persistentvolume/plugins/longhorn.vue +2 -2
  358. package/edit/persistentvolume/plugins/nfs.vue +1 -1
  359. package/edit/persistentvolume/plugins/photonPersistentDisk.vue +1 -1
  360. package/edit/persistentvolume/plugins/portworxVolume.vue +1 -1
  361. package/edit/persistentvolume/plugins/quobyte.vue +1 -1
  362. package/edit/persistentvolume/plugins/rbd.vue +41 -41
  363. package/edit/persistentvolume/plugins/scaleIO.vue +1 -1
  364. package/edit/persistentvolume/plugins/storageos.vue +1 -1
  365. package/edit/persistentvolume/plugins/vsphereVolume.vue +1 -1
  366. package/edit/persistentvolumeclaim.vue +78 -75
  367. package/edit/provisioning.cattle.io.cluster/DrainOptions.vue +1 -1
  368. package/edit/provisioning.cattle.io.cluster/MachinePool.vue +12 -8
  369. package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +10 -1
  370. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +87 -27
  371. package/edit/provisioning.cattle.io.cluster/S3Config.vue +1 -1
  372. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +3 -6
  373. package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.tests.ts +1 -1
  374. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +93 -0
  375. package/edit/provisioning.cattle.io.cluster/import.vue +3 -3
  376. package/edit/provisioning.cattle.io.cluster/index.vue +31 -8
  377. package/edit/provisioning.cattle.io.cluster/rke2.vue +458 -164
  378. package/edit/resources.cattle.io.backup.vue +2 -2
  379. package/edit/secret/generic.vue +1 -0
  380. package/edit/secret/index.vue +3 -7
  381. package/edit/service.vue +3 -1
  382. package/edit/storage.k8s.io.storageclass/index.vue +101 -17
  383. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +114 -0
  384. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/no-provisioner.vue +1 -1
  385. package/edit/token.vue +1 -1
  386. package/edit/ui.cattle.io.navlink.vue +8 -8
  387. package/edit/workload/Job.vue +3 -3
  388. package/edit/workload/Upgrading.vue +1 -1
  389. package/edit/workload/VolumeClaimTemplate.vue +1 -1
  390. package/edit/workload/__tests__/index.test.ts +98 -0
  391. package/edit/workload/index.vue +61 -11
  392. package/edit/workload/mixins/workload.js +128 -91
  393. package/edit/workload/storage/ContainerMountPaths.vue +1 -11
  394. package/edit/workload/storage/Mount.vue +1 -1
  395. package/edit/workload/storage/azureDisk.vue +1 -1
  396. package/edit/workload/storage/azureFile.vue +1 -1
  397. package/edit/workload/storage/csi/index.vue +1 -1
  398. package/edit/workload/storage/emptyDir.vue +88 -0
  399. package/edit/workload/storage/ephemeralVolume/index.vue +2 -2
  400. package/edit/workload/storage/gcePersistentDisk.vue +1 -1
  401. package/edit/workload/storage/hostPath.vue +1 -1
  402. package/edit/workload/storage/index.vue +8 -0
  403. package/edit/workload/storage/nfs.vue +1 -1
  404. package/edit/workload/storage/persistentVolumeClaim/index.vue +2 -2
  405. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +1 -1
  406. package/edit/workload/storage/secret.vue +1 -1
  407. package/edit/workload/storage/vsphereVolume.vue +1 -1
  408. package/layouts/default.vue +132 -58
  409. package/list/__tests__/workload.test.ts +53 -0
  410. package/list/catalog.cattle.io.app.vue +1 -0
  411. package/list/cis.cattle.io.clusterscan.vue +1 -0
  412. package/list/fleet.cattle.io.bundle.vue +5 -6
  413. package/list/fleet.cattle.io.cluster.vue +6 -3
  414. package/list/fleet.cattle.io.clusterregistrationtoken.vue +5 -6
  415. package/list/fleet.cattle.io.gitrepo.vue +5 -10
  416. package/list/group.principal.vue +8 -8
  417. package/list/helm.cattle.io.projecthelmchart.vue +2 -6
  418. package/list/logging.banzaicloud.io.clusterflow.vue +4 -1
  419. package/list/logging.banzaicloud.io.flow.vue +6 -5
  420. package/list/management.cattle.io.cluster.vue +1 -0
  421. package/list/management.cattle.io.feature.vue +4 -5
  422. package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +47 -0
  423. package/list/management.cattle.io.setting.vue +2 -2
  424. package/list/management.cattle.io.user.vue +4 -10
  425. package/list/monitoring.coreos.com.alertmanagerconfig.vue +2 -7
  426. package/list/node.vue +9 -6
  427. package/list/persistentvolume.vue +3 -3
  428. package/list/persistentvolumeclaim.vue +3 -4
  429. package/list/provisioning.cattle.io.cluster.vue +21 -22
  430. package/list/service.vue +6 -14
  431. package/list/workload.vue +43 -38
  432. package/machine-config/amazonec2.vue +1 -1
  433. package/machine-config/azure.vue +429 -60
  434. package/machine-config/pnap.vue +288 -0
  435. package/mixins/__tests__/create-edit-view.test.ts +1 -1
  436. package/mixins/auth-config.js +1 -3
  437. package/mixins/browser-tab-visibility.js +8 -14
  438. package/mixins/chart.js +15 -15
  439. package/mixins/create-edit-view/impl.js +4 -0
  440. package/mixins/create-edit-view/index.js +9 -7
  441. package/mixins/form-validation.js +1 -1
  442. package/mixins/labeled-form-element.ts +6 -6
  443. package/mixins/resource-fetch-namespaced.js +98 -0
  444. package/mixins/resource-fetch.js +82 -48
  445. package/mixins/resource-manager.js +2 -24
  446. package/models/apps.controllerrevision.js +7 -0
  447. package/models/apps.daemonset.js +18 -0
  448. package/models/apps.deployment.js +44 -0
  449. package/models/apps.replicaset.js +7 -0
  450. package/models/apps.statefulset.js +18 -0
  451. package/models/autoscaling.horizontalpodautoscaler.js +5 -5
  452. package/models/batch.cronjob.js +15 -15
  453. package/models/batch.job.js +15 -0
  454. package/models/catalog.cattle.io.app.js +6 -6
  455. package/models/catalog.cattle.io.clusterrepo.js +7 -7
  456. package/models/catalog.cattle.io.operation.js +5 -5
  457. package/models/chart.js +4 -4
  458. package/models/cis.cattle.io.clusterscan.js +10 -10
  459. package/models/cluster/node.js +46 -38
  460. package/models/cluster.x-k8s.io.machine.js +39 -17
  461. package/models/cluster.x-k8s.io.machinedeployment.js +12 -2
  462. package/models/constraints.gatekeeper.sh.constraint.js +1 -1
  463. package/models/etcdbackup.js +4 -4
  464. package/models/event.js +7 -0
  465. package/models/fleet.cattle.io.cluster.js +15 -15
  466. package/models/fleet.cattle.io.clustergroup.js +1 -1
  467. package/models/fleet.cattle.io.gitrepo.js +15 -15
  468. package/models/group.principal.js +1 -1
  469. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  470. package/models/logging.banzaicloud.io.flow.js +6 -2
  471. package/models/logging.banzaicloud.io.output.js +15 -3
  472. package/models/management.cattle.io.authconfig.js +4 -4
  473. package/models/management.cattle.io.cluster.js +10 -10
  474. package/models/management.cattle.io.clusterroletemplatebinding.js +9 -9
  475. package/models/management.cattle.io.globalrole.js +26 -5
  476. package/models/management.cattle.io.node.js +46 -11
  477. package/models/management.cattle.io.nodepool.js +3 -3
  478. package/models/management.cattle.io.nodetemplate.js +21 -21
  479. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +4 -0
  480. package/models/management.cattle.io.project.js +32 -13
  481. package/models/management.cattle.io.projectroletemplatebinding.js +6 -6
  482. package/models/management.cattle.io.roletemplate.js +54 -31
  483. package/models/management.cattle.io.setting.js +1 -1
  484. package/models/management.cattle.io.user.js +41 -5
  485. package/models/monitoring.coreos.com.alertmanagerconfig.js +4 -4
  486. package/models/monitoring.coreos.com.receiver.js +7 -7
  487. package/models/monitoring.coreos.com.route.js +2 -2
  488. package/models/namespace.js +55 -5
  489. package/models/persistentvolume.js +14 -2
  490. package/models/persistentvolumeclaim.js +4 -4
  491. package/models/pod.js +25 -10
  492. package/models/projectroletemplatebinding.js +7 -0
  493. package/models/provisioning.cattle.io.cluster.js +89 -38
  494. package/models/rbac.authorization.k8s.io.role.js +4 -4
  495. package/models/rke-machine.cattle.io.pnapmachinetemplate.js +15 -0
  496. package/models/rke.cattle.io.etcdsnapshot.js +4 -4
  497. package/models/service.js +29 -28
  498. package/models/storage.k8s.io.storageclass.js +41 -26
  499. package/models/workload.js +66 -35
  500. package/nuxt.config.js +59 -34
  501. package/package.json +7 -7
  502. package/pages/about.vue +15 -3
  503. package/pages/account/index.vue +1 -1
  504. package/pages/auth/login.vue +37 -7
  505. package/pages/auth/setup.vue +11 -11
  506. package/pages/c/_cluster/_product/_resource/_id.vue +2 -2
  507. package/pages/c/_cluster/apps/charts/chart.vue +4 -4
  508. package/pages/c/_cluster/apps/charts/index.vue +21 -20
  509. package/pages/c/_cluster/apps/charts/install.vue +73 -36
  510. package/pages/c/_cluster/auth/config/_id.vue +8 -2
  511. package/pages/c/_cluster/auth/config/index.vue +8 -6
  512. package/pages/c/_cluster/auth/group.principal/assign-edit.vue +1 -1
  513. package/pages/c/_cluster/auth/roles/_resource/_id.vue +2 -2
  514. package/pages/c/_cluster/auth/roles/index.vue +5 -7
  515. package/pages/c/_cluster/explorer/EventsTable.vue +8 -8
  516. package/pages/c/_cluster/explorer/index.vue +26 -20
  517. package/pages/c/_cluster/explorer/tools/index.vue +4 -4
  518. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +2 -2
  519. package/pages/c/_cluster/fleet/index.vue +10 -10
  520. package/pages/c/_cluster/gatekeeper/index.vue +1 -1
  521. package/pages/c/_cluster/legacy/index.vue +1 -1
  522. package/pages/c/_cluster/longhorn/index.vue +2 -2
  523. package/pages/c/_cluster/mcapps/index.vue +1 -1
  524. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +15 -4
  525. package/pages/c/_cluster/monitoring/index.vue +1 -1
  526. package/pages/c/_cluster/navlinks/_group.vue +1 -1
  527. package/pages/c/_cluster/neuvector/index.vue +2 -2
  528. package/pages/c/_cluster/settings/banners.vue +30 -30
  529. package/pages/c/_cluster/settings/brand.vue +9 -9
  530. package/pages/c/_cluster/settings/links.vue +6 -6
  531. package/pages/c/_cluster/settings/performance.vue +48 -2
  532. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +1 -1
  533. package/pages/c/_cluster/uiplugins/InstallDialog.vue +1 -1
  534. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +59 -9
  535. package/pages/c/_cluster/uiplugins/index.vue +30 -4
  536. package/pages/diagnostic.vue +5 -4
  537. package/pages/home.vue +105 -30
  538. package/pages/prefs.vue +23 -12
  539. package/pages/rio/mesh.vue +5 -5
  540. package/pages/support/index.vue +7 -7
  541. package/pkg/dynamic-importer.lib.js +8 -0
  542. package/pkg/vue.config.js +14 -1
  543. package/plugins/dashboard-store/__tests__/mutations.spec.js +406 -0
  544. package/plugins/dashboard-store/actions.js +32 -25
  545. package/plugins/dashboard-store/getters.js +50 -33
  546. package/plugins/dashboard-store/mutations.js +134 -28
  547. package/plugins/dashboard-store/normalize.js +1 -1
  548. package/plugins/dashboard-store/resource-class.js +121 -141
  549. package/plugins/steve/actions.js +30 -0
  550. package/plugins/steve/caches/resourceCache.js +60 -0
  551. package/plugins/steve/getters.js +44 -1
  552. package/plugins/steve/mutations.js +97 -36
  553. package/plugins/steve/resourceWatcher.js +277 -0
  554. package/plugins/steve/schema.utils.js +25 -0
  555. package/plugins/steve/subscribe.js +292 -119
  556. package/plugins/steve/worker/index.js +17 -0
  557. package/plugins/steve/worker/web-worker.advanced.js +302 -0
  558. package/plugins/steve/{web-worker.steve-sub-worker.js → worker/web-worker.basic.js} +6 -47
  559. package/promptRemove/management.cattle.io.project.vue +1 -1
  560. package/promptRemove/mixin/roleDeletionCheck.js +7 -7
  561. package/promptRemove/pod.vue +2 -2
  562. package/rancher-components/components/BadgeState/BadgeState.spec.ts +12 -0
  563. package/rancher-components/components/BadgeState/BadgeState.vue +111 -0
  564. package/rancher-components/components/BadgeState/index.ts +1 -0
  565. package/rancher-components/components/Banner/Banner.test.ts +57 -0
  566. package/rancher-components/components/Banner/Banner.vue +242 -0
  567. package/rancher-components/components/Banner/index.ts +1 -0
  568. package/rancher-components/components/Card/Card.test.ts +37 -0
  569. package/rancher-components/components/Card/Card.vue +166 -0
  570. package/rancher-components/components/Card/index.ts +1 -0
  571. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +68 -0
  572. package/rancher-components/components/Form/Checkbox/Checkbox.vue +418 -0
  573. package/rancher-components/components/Form/Checkbox/index.ts +1 -0
  574. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +23 -0
  575. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +355 -0
  576. package/rancher-components/components/Form/LabeledInput/index.ts +1 -0
  577. package/rancher-components/components/Form/Radio/RadioButton.vue +276 -0
  578. package/rancher-components/components/Form/Radio/RadioGroup.vue +253 -0
  579. package/rancher-components/components/Form/Radio/index.ts +2 -0
  580. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +169 -0
  581. package/rancher-components/components/Form/TextArea/index.ts +1 -0
  582. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +94 -0
  583. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +149 -0
  584. package/rancher-components/components/Form/ToggleSwitch/index.ts +1 -0
  585. package/rancher-components/components/Form/index.ts +5 -0
  586. package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +151 -0
  587. package/rancher-components/components/LabeledTooltip/index.ts +1 -0
  588. package/rancher-components/components/StringList/StringList.test.ts +483 -0
  589. package/rancher-components/components/StringList/StringList.vue +611 -0
  590. package/rancher-components/components/StringList/index.ts +1 -0
  591. package/scripts/publish-shell.sh +38 -5
  592. package/scripts/record-deps.js +37 -0
  593. package/scripts/test-plugins-build.sh +19 -7
  594. package/scripts/typegen.sh +84 -0
  595. package/static/loading-indicator.html +1 -1
  596. package/store/action-menu.js +3 -3
  597. package/store/auth.js +4 -4
  598. package/store/aws.js +4 -4
  599. package/store/catalog.js +22 -22
  600. package/store/index.js +58 -7
  601. package/store/plugins.js +2 -19
  602. package/store/pnap.js +128 -0
  603. package/store/prefs.js +13 -3
  604. package/store/type-map.js +101 -44
  605. package/store/uiplugins.ts +2 -2
  606. package/store/wm.js +10 -0
  607. package/types/pod-security-admission.ts +36 -0
  608. package/types/shell/index.d.ts +3159 -0
  609. package/types/vue-shim.d +20 -0
  610. package/utils/__tests__/object.test.ts +17 -1
  611. package/utils/__tests__/pod-security-admission.test.ts +61 -0
  612. package/utils/alertmanagerconfig.js +6 -6
  613. package/utils/async.ts +36 -0
  614. package/utils/color.js +45 -0
  615. package/utils/crypto/browserHashUtils.js +18 -0
  616. package/utils/dynamic-importer.js +8 -0
  617. package/utils/gc/gc-types.ts +1 -1
  618. package/utils/install-redirect.js +1 -1
  619. package/utils/object.js +26 -2
  620. package/utils/parse-externalid.js +5 -5
  621. package/utils/pod-security-admission.ts +39 -0
  622. package/utils/socket.js +61 -24
  623. package/utils/string.js +2 -0
  624. package/utils/svg-filter.js +301 -0
  625. package/utils/time.js +55 -0
  626. package/utils/validators/cidr.js +4 -0
  627. package/utils/validators/formRules/__tests__/index.test.ts +26 -6
  628. package/utils/validators/formRules/index.ts +14 -0
  629. package/config/product/harvester-manager.js +0 -162
  630. package/creators/pkg/nuxt.config.js +0 -6
  631. package/edit/harvesterhci.io.management.cluster.vue +0 -153
  632. package/list/harvesterhci.io.management.cluster.vue +0 -241
  633. package/machine-config/harvester.vue +0 -693
  634. package/models/harvesterhci.io.management.cluster.js +0 -228
  635. package/pages/c/_cluster/harvesterManager/index.vue +0 -24
@@ -23,6 +23,8 @@ export const DOWNLOAD = {
23
23
  align: 'right',
24
24
  };
25
25
 
26
+ // This header is used for nodes in
27
+ // both Cluster Explorer and Cluster Management.
26
28
  export const INTERNAL_EXTERNAL_IP = {
27
29
  // @TODO this is called internal/external but displays external/internal (╯°□°)╯︵ ┻━┻
28
30
  name: 'internal-external-ip',
@@ -43,11 +45,11 @@ export const NAME = {
43
45
  };
44
46
 
45
47
  export const LOGGING_OUTPUT_PROVIDERS = {
46
- name: 'logging-output-providers',
47
- labelKey: 'tableHeaders.loggingOutputProviders',
48
- value: 'providersDisplay',
49
- sort: ['providersSortable'],
50
- formatter: 'List',
48
+ name: 'logging-output-providers',
49
+ labelKey: 'tableHeaders.loggingOutputProviders',
50
+ value: 'providersDisplay',
51
+ sort: ['providersSortable'],
52
+ formatter: 'List',
51
53
  };
52
54
 
53
55
  export const SIMPLE_NAME = {
@@ -228,14 +230,14 @@ export const AGE = {
228
230
  search: false,
229
231
  formatter: 'LiveDate',
230
232
  width: 100,
231
- align: 'right'
233
+ align: 'left'
232
234
  };
233
235
 
234
236
  export const AGE_NORMAN = {
235
237
  ...AGE,
236
- getValue: row => row.created,
237
- value: 'created',
238
- sort: 'created:desc',
238
+ getValue: row => row.created,
239
+ value: 'created',
240
+ sort: 'created:desc',
239
241
  };
240
242
 
241
243
  export const CREATION_DATE = {
@@ -254,6 +256,14 @@ export const DESCRIPTION = {
254
256
  width: 300,
255
257
  };
256
258
 
259
+ export const DURATION = {
260
+ name: 'duration',
261
+ labelKey: 'tableHeaders.duration',
262
+ value: 'duration.value',
263
+ sort: 'duration.seconds',
264
+ formatter: 'LiveDuration',
265
+ };
266
+
257
267
  export const IMAGE = {
258
268
  name: 'image',
259
269
  labelKey: 'tableHeaders.image',
@@ -372,11 +382,11 @@ export const USERNAME = {
372
382
  };
373
383
 
374
384
  export const USER_DISPLAY_NAME = {
375
- name: 'name',
376
- labelKey: 'tableHeaders.name',
377
- value: 'nameDisplay',
378
- sort: ['nameSort'],
379
- dashIfEmpty: true,
385
+ name: 'name',
386
+ labelKey: 'tableHeaders.name',
387
+ value: 'nameDisplay',
388
+ sort: ['nameSort'],
389
+ dashIfEmpty: true,
380
390
  };
381
391
 
382
392
  export const USER_PROVIDER = {
@@ -436,6 +446,13 @@ export const SUB_TYPE = {
436
446
  width: 120,
437
447
  };
438
448
 
449
+ export const EVENT_TYPE = {
450
+ name: 'type',
451
+ labelKey: 'tableHeaders.type',
452
+ value: 'eventType',
453
+ sort: 'eventType',
454
+ };
455
+
439
456
  export const STATUS = {
440
457
  name: 'status',
441
458
  labelKey: 'tableHeaders.status',
@@ -443,6 +460,13 @@ export const STATUS = {
443
460
  sort: ['status'],
444
461
  width: 175
445
462
  };
463
+ export const LAST_SEEN_TIME = {
464
+ name: 'lastSeen',
465
+ labelKey: 'tableHeaders.lastSeen',
466
+ value: 'lastSeen',
467
+ sort: 'lastTimestamp:desc',
468
+ tooltip: 'tableHeaders.lastSeenTooltip'
469
+ };
446
470
  export const LAST_HEARTBEAT_TIME = {
447
471
  name: 'lastHeartbeatTime',
448
472
  labelKey: 'tableHeaders.lastSeen',
@@ -538,10 +562,10 @@ export const API_GROUP = {
538
562
  };
539
563
 
540
564
  export const INGRESS_CLASS = {
541
- name: 'ingressClassName',
542
- labelKey: 'tableHeaders.ingressClass',
543
- value: `$['spec']['ingressClassName']`,
544
- sort: `$['spec']['ingressClassName']`,
565
+ name: 'ingressClassName',
566
+ labelKey: 'tableHeaders.ingressClass',
567
+ value: `$['spec']['ingressClassName']`,
568
+ sort: `$['spec']['ingressClassName']`,
545
569
  };
546
570
 
547
571
  export const INGRESS_DEFAULT_BACKEND = {
@@ -781,31 +805,31 @@ export const GROUP_ROLE_NAME = {
781
805
  };
782
806
 
783
807
  export const HPA_REFERENCE = {
784
- name: 'reference',
785
- labelKey: 'tableHeaders.hpaReference',
786
- value: 'spec.scaleTargetRef.name',
787
- sort: 'spec.scaleTargetRef.name',
808
+ name: 'reference',
809
+ labelKey: 'tableHeaders.hpaReference',
810
+ value: 'spec.scaleTargetRef.name',
811
+ sort: 'spec.scaleTargetRef.name',
788
812
  };
789
813
 
790
814
  export const MIN_REPLICA = {
791
- name: 'minimum-replica',
792
- labelKey: 'tableHeaders.minReplicas',
793
- value: 'spec.minReplicas',
794
- sort: 'spec.minReplicas',
815
+ name: 'minimum-replica',
816
+ labelKey: 'tableHeaders.minReplicas',
817
+ value: 'spec.minReplicas',
818
+ sort: 'spec.minReplicas',
795
819
  };
796
820
 
797
821
  export const MAX_REPLICA = {
798
- name: 'maximum-replica',
799
- labelKey: 'tableHeaders.maxReplicas',
800
- value: 'spec.maxReplicas',
801
- sort: 'spec.maxReplicas',
822
+ name: 'maximum-replica',
823
+ labelKey: 'tableHeaders.maxReplicas',
824
+ value: 'spec.maxReplicas',
825
+ sort: 'spec.maxReplicas',
802
826
  };
803
827
 
804
828
  export const CURRENT_REPLICA = {
805
- name: 'current-replica',
806
- labelKey: 'tableHeaders.currentReplicas',
807
- value: 'status.currentReplicas',
808
- sort: 'status.currentReplicas',
829
+ name: 'current-replica',
830
+ labelKey: 'tableHeaders.currentReplicas',
831
+ value: 'status.currentReplicas',
832
+ sort: 'status.currentReplicas',
809
833
  };
810
834
 
811
835
  export const EXPIRY_STATE = {
@@ -834,18 +858,18 @@ export const SCOPE = {
834
858
 
835
859
  export const SCOPE_NORMAN = {
836
860
  ...SCOPE,
837
- value: 'clusterId',
838
- sort: ['clusterId'],
861
+ value: 'clusterId',
862
+ sort: ['clusterId'],
839
863
  };
840
864
 
841
865
  export const EXPIRES = {
842
- name: 'expires',
843
- value: 'expiresAt',
844
- labelKey: 'tableHeaders.expires',
845
- align: 'left',
846
- sort: ['expiresAt'],
847
- width: 200,
848
- formatter: 'LiveExpiryDate'
866
+ name: 'expires',
867
+ value: 'expiresAt',
868
+ labelKey: 'tableHeaders.expires',
869
+ align: 'left',
870
+ sort: ['expiresAt'],
871
+ width: 200,
872
+ formatter: 'LiveExpiryDate'
849
873
  };
850
874
 
851
875
  export const RESTART = {
@@ -859,9 +883,9 @@ export const RESTART = {
859
883
  };
860
884
 
861
885
  export const ROLE = {
862
- name: 'role',
863
- value: 'roleDisplay',
864
- labelKey: 'tableHeaders.role',
886
+ name: 'role',
887
+ value: 'roleDisplay',
888
+ labelKey: 'tableHeaders.role',
865
889
  };
866
890
 
867
891
  export const FEATURE_DESCRIPTION = {
@@ -928,9 +952,3 @@ export const FLEET_BUNDLE_TYPE = {
928
952
  sort: ['bundleType'],
929
953
  width: 100,
930
954
  };
931
-
932
- export const IP_ADDRESS = {
933
- name: 'ipaddress',
934
- value: 'ipaddress',
935
- labelKey: 'tableHeaders.ipaddress',
936
- };
package/config/types.js CHANGED
@@ -62,6 +62,7 @@ export const SERVICE = 'service';
62
62
  export const SECRET = 'secret';
63
63
  export const SERVICE_ACCOUNT = 'serviceaccount';
64
64
  export const STORAGE_CLASS = 'storage.k8s.io.storageclass';
65
+ export const CSI_DRIVER = 'storage.k8s.io.csidriver';
65
66
  export const OBJECT_META = 'io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta';
66
67
  export const NETWORK_ATTACHMENT = 'k8s.cni.cncf.io.networkattachmentdefinition';
67
68
 
@@ -97,10 +98,10 @@ export const METRIC = {
97
98
  };
98
99
 
99
100
  export const CATALOG = {
100
- CLUSTER_REPO: 'catalog.cattle.io.clusterrepo',
101
- OPERATION: 'catalog.cattle.io.operation',
102
- APP: 'catalog.cattle.io.app',
103
- REPO: 'catalog.cattle.io.repo',
101
+ CLUSTER_REPO: 'catalog.cattle.io.clusterrepo',
102
+ OPERATION: 'catalog.cattle.io.operation',
103
+ APP: 'catalog.cattle.io.app',
104
+ REPO: 'catalog.cattle.io.repo',
104
105
  };
105
106
 
106
107
  // UI Plugin type
@@ -128,8 +129,8 @@ export const MONITORING = {
128
129
  RESPONDER: 'monitoring.coreos.com.receiver.responder',
129
130
  ROUTE: 'monitoring.coreos.com.route',
130
131
  ROUTE_SPEC: 'monitoring.coreos.com.route.spec',
131
- ALERTMANAGERCONFIG_RECEIVER_SPEC: 'monitoring.coreos.com.v1alpha1.alertmanagerconfig.spec.receivers',
132
- ALERTMANAGERCONFIG_ROUTE_SPEC: 'monitoring.coreos.com.v1alpha1.alertmanagerconfig.spec.route'
132
+ ALERTMANAGERCONFIG_RECEIVER_SPEC: 'monitoring.coreos.com.v1alpha1.alertmanagerconfig.spec.receivers',
133
+ ALERTMANAGERCONFIG_ROUTE_SPEC: 'monitoring.coreos.com.v1alpha1.alertmanagerconfig.spec.route'
133
134
  }
134
135
  };
135
136
 
@@ -173,6 +174,7 @@ export const MANAGEMENT = {
173
174
  GLOBAL_ROLE: 'management.cattle.io.globalrole',
174
175
  GLOBAL_ROLE_BINDING: 'management.cattle.io.globalrolebinding',
175
176
  POD_SECURITY_POLICY_TEMPLATE: 'management.cattle.io.podsecuritypolicytemplate',
177
+ PSA: 'management.cattle.io.podsecurityadmissionconfigurationtemplate',
176
178
  MANAGED_CHART: 'management.cattle.io.managedchart',
177
179
  USER_NOTIFICATION: 'management.cattle.io.rancherusernotification',
178
180
  GLOBAL_DNS_PROVIDER: 'management.cattle.io.globaldnsprovider',
@@ -212,7 +214,7 @@ export const GATEKEEPER = {
212
214
 
213
215
  export const ISTIO = {
214
216
  VIRTUAL_SERVICE: 'networking.istio.io.virtualservice',
215
- DESTINATION_RULE: 'networking.istio.io.destinationrule',
217
+ DESTINATION_RULE: 'networking.istio.io.destinationrule',
216
218
  GATEWAY: 'networking.istio.io.gateway'
217
219
  };
218
220
 
@@ -283,7 +285,8 @@ export const VIRTUAL_HARVESTER_PROVIDER = 'harvester';
283
285
 
284
286
  export const ADDRESSES = {
285
287
  HOSTNAME: 'Hostname',
286
- INTERNAL_IP: 'InternalIP'
288
+ INTERNAL_IP: 'InternalIP',
289
+ EXTERNAL_IP: 'ExternalIP'
287
290
  };
288
291
 
289
292
  export const DEFAULT_WORKSPACE = 'fleet-default';
@@ -39,10 +39,10 @@ export const UI_PLUGIN_CHART_ANNOTATIONS = {
39
39
 
40
40
  // Plugin Metadata properties
41
41
  export const UI_PLUGIN_METADATA = {
42
- RANCHER_VERSION: 'rancherVersion',
43
- EXTENSION_VERSION: 'extVersion',
44
- EXTENSIONS_HOST: 'host',
45
- DISPLAY_NAME: 'displayName',
42
+ RANCHER_VERSION: 'rancherVersion',
43
+ EXTENSION_VERSION: 'extVersion',
44
+ EXTENSIONS_HOST: 'host',
45
+ DISPLAY_NAME: 'displayName',
46
46
  };
47
47
 
48
48
  export function isUIPlugin(chart) {
@@ -1,35 +1,36 @@
1
1
  ---
2
- title: 快速开始
2
+ title: 开始使用
3
3
  sideToc: false
4
4
  ---
5
5
 
6
- # 入门
6
+ # 开始使用
7
7
 
8
- 这个简短的指南提供了一个关于用户界面的基本介绍。
8
+ 本指南提供了 UI 的基本介绍。
9
9
 
10
- 如果你以前一直在使用集群管理的用户界面,请查看下面的指南,以了解在新的用户界面中你可以在哪里访问相应的功能。
10
+ 如果你以前使用的是 Cluster Manager UI,请查看下面的指南,了解在新的 UI 中你可以在哪里访问相应的功能。
11
11
 
12
12
  ## 首页
13
13
 
14
- 当你第一次登录Rancher时,你会被带入新的主页。这里有许多信息卡。你可以使用<i class="icon icon-close doc-icon"></i>图标来关闭这些卡片。如果你想恢复隐藏的卡片,请使用右上方的<i class="icon icon-actions doc-icon"></i>图标打开页面菜单,选择 "恢复隐藏的卡片"。
15
-
16
- 你可以从主页和首选项页面来改变你登录时的位置。要访问用户偏好,请点击右上方的用户头像图标,并从菜单中选择'偏好'。
14
+ 首次登录 Rancher 时,你会访问新的主页。这里包括了许多信息卡片。你可以使用 <i class="icon icon-close doc-icon"></i> 图标来关闭这些卡片。如果要恢复隐藏的卡片,请单击右上方的 <i class="icon icon-actions doc-icon"></i> 图标,然后选择 "恢复隐藏的卡片"。
17
15
 
16
+ 你可以从主页和偏好设置页面改变登录时显示的页面。要访问用户偏好设置页面,请单击右上角的用户头像图标,然后从菜单中选择“偏好设置”。
18
17
  ### 顶层菜单
19
18
 
20
- 新的滑入式菜单提供了对你的集群和应用程序的快速访问。点击<svg class="doc-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none" /><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" /></svg> 左上方的图标即可进入。
19
+ 新的滑入式菜单让你能快速访问集群和应用程序。点击 <svg class="doc-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none" /><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" /></svg> 图标(左上角)即可进行访问。
20
+
21
21
 
22
- ## 从集群管理器迁移
23
22
 
24
- 2.6版本开始,集群管理不再作为一个单独的用户界面提供。Dashboard的用户界面已被增强,以提供来自集群管理的功能。因此,你可能熟悉的集群管理的功能可以在新的用户界面中找到稍微不同的位置 - 本指南帮助你找到你正在寻找的东西。
23
+ ## Cluster Manager 迁移
25
24
 
26
- > 请注意,需要启用传统功能标志,以使传统功能可用。你可以从滑入式菜单→全局设置→功能标志中启用该功能。
25
+ Rancher 2.6 开始,Cluster Manager 不再作为一个单独的 UI。我们已增强 Dashboard UI 以提供 Cluster Manager 的功能。因此,Cluster Manager 的功能在新的 UI 中的位置可能不同,本指南会帮助你找到所需的功能。
26
+
27
+ > 请注意,你需要启用旧版功能标志才能使用旧版功能。你可以从滑入式菜单 → 全局设置 → 功能开关中启用该功能。
27
28
 
28
29
  <table>
29
30
  <thead>
30
31
  <tr>
31
- <th>特性</th>
32
- <th>集群管理位置</th>
32
+ <th>功能</th>
33
+ <th>Cluster Manager 位置</th>
33
34
  <th>新位置</th>
34
35
  </tr>
35
36
  </thead>
@@ -39,210 +40,185 @@ sideToc: false
39
40
  </tr>
40
41
  <tr>
41
42
  <td>集群列表</td>
42
- <td>全局 → Clusters</td>
43
- <td>菜单 → 管理集群Clusters</td>
43
+ <td>全局 → 集群</td>
44
+ <td>菜单 → 集群管理集群</td>
44
45
  </tr>
45
46
  <tr>
46
- <td>Drivers</td>
47
- <td>GlobalToolsDrivers</td>
48
- <td>Menu管理集群Drivers</td>
47
+ <td>驱动</td>
48
+ <td>全局工具驱动</td>
49
+ <td>菜单集群管理驱动</td>
49
50
  </tr>
50
51
  <tr>
51
- <td>RKE1 Templates</td>
52
- <td>GlobalTools → RKE Templates</td>
53
- <td>MenuCluster Management RKE1 Configuration → RKE Templates</td>
52
+ <td>RKE1 模板</td>
53
+ <td>全局工具 → RKE 模板</td>
54
+ <td>菜单集群管理 RKE1 配置 → RKE 模板</td>
54
55
  </tr>
55
56
  <tr>
56
- <td>RKE1 Cloud Credentials</td>
57
- <td>User Icon Cloud Credentials</td>
58
- <td>MenuCluster Management → RKE1 ConfigurationCloud Credentials</td>
57
+ <td>RKE1 云凭证</td>
58
+ <td>用户图标云凭证</td>
59
+ <td>菜单集群管理 → RKE1 配置云凭证</td>
59
60
  </tr>
60
61
  <tr>
61
- <td>RKE1 Node Templates</td>
62
- <td>User Icon Node Templates</td>
63
- <td>MenuCluster Management → RKE1 ConfigurationNode Templates</td>
62
+ <td>RKE1 节点模板</td>
63
+ <td>用户图标节点模板</td>
64
+ <td>菜单集群管理 → RKE1 配置节点模板</td>
64
65
  </tr>
65
66
  <tr>
66
- <td>RKE1 Snapshots</td>
67
- <td>GlobalClustersSnapshots</td>
68
- <td>MenuCluster Management → (Cluster) → Snapshots</td></td>
67
+ <td>RKE1 快照</td>
68
+ <td>全局集群快照</td>
69
+ <td>菜单集群管理 →(集群)→ 快照</td></td>
69
70
  </tr>
70
71
  <!-- -->
71
72
  <tr class="table-group">
72
- <td colspan="3">Global</td>
73
+ <td colspan="3">全局</td>
73
74
  </tr>
74
75
  <tr>
75
- <td>Apps</td>
76
- <td>GlobalApps</td>
77
- <td>MenuMulti-cluster Apps → Apps</td>
76
+ <td>设置</td>
77
+ <td>全局设置</td>
78
+ <td>菜单全局设置</td>
78
79
  </tr>
79
80
  <tr>
80
- <td>Settings</td>
81
- <td>GlobalSettings</td>
82
- <td>MenuGlobal Settings</td>
81
+ <td>应用商店</td>
82
+ <td>全局工具 → 应用商店</td>
83
+ <td>菜单全局设置 → 应用商店</td>
83
84
  </tr>
84
85
  <tr>
85
- <td>Catalogs</td>
86
- <td>GlobalToolsCatalogs</td>
87
- <td>MenuMulti-cluster Apps Catalogs</td>
86
+ <td>全局 DNS 条目</td>
87
+ <td>全局工具全局 DNS 条目</td>
88
+ <td>菜单全局设置全局 DNS 条目</td>
88
89
  </tr>
89
90
  <tr>
90
- <td>Global DNS Entries</td>
91
- <td>Global Tools Global DNS Entries</td>
92
- <td>MenuMulti-cluster Apps Global DNS Entries</td>
91
+ <td>全局 DNS 提供商</td>
92
+ <td>全局→ 工具全局 DNS 提供商</td>
93
+ <td>菜单全局设置全局 DNS 提供商</td>
93
94
  </tr>
94
95
  <tr>
95
- <td>Global DNS Providers</td>
96
- <td>GlobalToolsGlobal DNS Providers</td>
97
- <td>MenuMulti-cluster Apps Global DNS Providers</td>
98
- </tr>
99
- <tr>
100
- <td>Pod Security Policies</td>
101
- <td>Global → Security → Pod Security Policies</td>
102
- <td>Menu → Cluster Management → Advanced → Pod Security Policies</td>
96
+ <td>Pod 安全策略</td>
97
+ <td>全局安全Pod 安全策略</td>
98
+ <td>菜单集群管理Pod 安全策略</td>
103
99
  </tr>
104
100
  <!-- -->
105
101
  <tr class="table-group">
106
- <td colspan="3">Cluster Functionality (for a specific cluster)</td>
102
+ <td colspan="3">集群功能(针对特定集群)</td>
107
103
  </tr>
108
104
  <tr>
109
- <td>Cluster</td>
110
- <td>(Cluster) → Cluster</td>
111
- <td>Menu (Cluster) → Cluster</td>
105
+ <td>集群</td>
106
+ <td>(集群)→ 集群</td>
107
+ <td>菜单 →(集群)→ 集群</td>
112
108
  </tr>
113
109
  <tr>
114
- <td>Nodes</td>
115
- <td>(Cluster) → Nodes</td>
116
- <td>Menu -> (Cluster)Cluster → Kube Nodes</td>
110
+ <td>节点</td>
111
+ <td>(集群)→ 节点</td>
112
+ <td>菜单 →(集群)→ 集群 → Kube 节点</td>
117
113
  </tr>
118
114
  <tr>
119
- <td>Projects/Namespaces</td>
120
- <td>(Cluster) → Projects/Namespaces</td>
121
- <td>Menu -> (Cluster)Cluster → Projects/Namespaces</td>
115
+ <td>项目/命名空间</td>
116
+ <td>(集群)→ 项目/命名空间</td>
117
+ <td>菜单 →(集群)→ 集群项目/命名空间</td>
122
118
  </tr>
123
119
  <tr>
124
120
  <td>Alerts (V1)</td>
125
- <td>(Cluster) Tools → Alerts</td>
126
- <td>Menu (Cluster)Legacy -> Alerts</td>
121
+ <td>(集群)→ 工具 → Alerts</td>
122
+ <td>菜单 →(集群)→ 旧版 → Alerts</td>
127
123
  </tr>
128
124
  <tr>
129
- <td>Catalogs</td>
130
- <td>(Cluster) Tools Catalogs</td>
131
- <td>Menu (Cluster) → Legacy -> Catalogs</td>
125
+ <td>应用商店</td>
126
+ <td>(集群)→ 工具应用商店</td>
127
+ <td>菜单 →(集群)→ 旧版 -> 应用商店</td>
132
128
  </tr>
133
129
  <tr>
134
130
  <td>Notifiers (V1)</td>
135
- <td>(Cluster) Tools → Notifiers</td>
136
- <td>Menu (Cluster) → Legacy -> Notifiers</td>
137
- </tr>
138
- <tr>
139
- <td>Logging (V1)</td>
140
- <td>(Cluster) → Tools → Logging</td>
141
- <td>Menu → (Cluster) → Cluster Tools -> Logging (Legacy)</td>
131
+ <td>(集群)→ 工具 → Notifiers</td>
132
+ <td>菜单 →(集群)→ 旧版 -> Notifiers</td>
142
133
  </tr>
143
134
  <tr>
144
135
  <td>Monitoring (V1)</td>
145
- <td>(Cluster) Tools → Monitoring</td>
146
- <td>Menu(Cluster)Cluster Tools -> Monitoring (Legacy)</td>
147
- </tr>
148
- <tr>
149
- <td>Istio (V1)</td>
150
- <td>(Cluster) → Tools → Istio</td>
151
- <td>Menu → (Cluster) → Cluster Tools -> Istio (Legacy)</td>
152
- </tr>
153
- <tr>
154
- <td>CIS Scans (V1)</td>
155
- <td>(Cluster) → Tools → CIS Scans</td>
156
- <td>Menu → (Cluster) → Legacy -> CIS Scans</td>
136
+ <td>(集群)→ 工具 → Monitoring</td>
137
+ <td>菜单(集群)→ 集群工具 → Monitoring(旧版)</td>
157
138
  </tr>
158
139
  <tr class="table-group">
159
140
  <td colspan="3">V1 Monitoring</td>
160
141
  <tr>
161
- <td>Cluster Metrics</td>
162
- <td>(Cluster) → Cluster</td>
163
- <td>Menu (Cluster) → Cluster</td>
142
+ <td>集群指标</td>
143
+ <td>(集群)→ 集群</td>
144
+ <td>菜单 →(集群)→ 集群</td>
164
145
  </tr>
165
146
  <tr>
166
- <td>Node Metrics</td>
167
- <td>(Cluster) Nodes → (Node)</td>
168
- <td>Menu (Cluster)Cluster → Nodes → (Node)</td>
147
+ <td>节点指标</td>
148
+ <td>(集群)→ 节点 →(节点)</td>
149
+ <td>菜单 →(集群)→ 集群节点 →(节点)</td>
169
150
  </tr>
170
151
  <tr>
171
- <td>Workload Metrics</td>
172
- <td>(Cluster) (Project) Resources Workloads → (Workload) → Workload Metrics</td>
173
- <td>Menu (Cluster) → Deployments → (Deployment) → Metrics</td>
152
+ <td>工作负载指标</td>
153
+ <td>(集群)→(项目)→ 资源工作负载 →(工作负载)→ 工作负载指标</td>
154
+ <td>菜单 →(集群)→ Deployments →(Deployment)→ 指标</td>
174
155
  </tr>
175
156
  <tr>
176
- <td>Pod Metrics</td>
177
- <td>(Cluster) (Project) Resources Workloads → (Workload) → Pods → (Pod) → Pod Metrics</td>
178
- <td>Menu (Cluster) → Deployments → (Deployment) Pods → (Pod) → Metrics</td>
157
+ <td>Pod 指标</td>
158
+ <td>(集群)→(项目)→ 资源工作负载 →(工作负载)→ Pod → (Pod) → Pod 指标</td>
159
+ <td>菜单 →(集群)→ Deployments →(Deployment)→ Pod → (Pod) → 指标</td>
179
160
  </tr>
180
161
  </tr>
181
162
  <tr class="table-group">
182
- <td colspan="3">Project</td>
163
+ <td colspan="3">项目</td>
183
164
  </tr>
184
165
  <tr>
185
- <td>Namespaces</td>
186
- <td>(Cluster) → (Project) → Namespaces</td>
187
- <td>Menu (Cluster)Cluster → Projects/Namespaces</td>
166
+ <td>命名空间</td>
167
+ <td>(集群)→(项目)→ 命名空间</td>
168
+ <td>菜单 →(集群)→ 集群项目/命名空间</td>
188
169
  </tr>
189
170
  <tr>
190
- <td>Apps</td>
191
- <td>(Cluster) → (Project) → Apps</td>
192
- <td>Menu (Cluster)LegacyProject → Apps</td>
171
+ <td>应用</td>
172
+ <td>(集群)→(项目)→ 应用</td>
173
+ <td>菜单 →(集群)→ 旧版项目应用</td>
193
174
  </tr>
194
175
  <tr>
195
- <td>Alerts</td>
196
- <td>(Cluster) (Project) Tools → Alerts</td>
197
- <td>Menu (Cluster)Legacy Project → (Project) → Alerts</td>
176
+ <td>告警</td>
177
+ <td>(集群)→(项目)→ 工具 → Alerts</td>
178
+ <td>菜单 →(集群)→ 旧版项目 →(项目)→ Alerts</td>
198
179
  </tr>
199
180
  <tr>
200
- <td>Catalogs</td>
201
- <td>(Cluster) (Project) Tools → Catalogs</td>
202
- <td>Menu (Cluster)Legacy Project → (Project) → Catalogs</td>
181
+ <td>应用商店</td>
182
+ <td>(集群)→(项目)→ 工具应用商店</td>
183
+ <td>菜单 →(集群)→ 旧版项目 →(项目)→ 应用商店</td>
203
184
  </tr>
204
185
  <tr>
205
186
  <td>Logging</td>
206
- <td>(Cluster) (Project) Tools → Logging</td>
207
- <td>Menu (Cluster)Legacy Project → (Project) → Logging</td>
187
+ <td>(集群)→(项目)→ 工具 → Logging</td>
188
+ <td>菜单 →(集群)→ 旧版项目 →(项目)→ Logging</td>
208
189
  </tr>
209
190
  <tr>
210
- <td>Monitoring</td>
211
- <td>(Cluster) (Project) Tools → Monitoring</td>
212
- <td>Menu (Cluster)Legacy Project → (Project) → Monitoring</td>
213
- </tr>
214
- <tr>
215
- <td>Pipeline</td>
216
- <td>(Cluster) → (Project) → Tools → Pipeline</td>
217
- <td>Menu → (Cluster) → Legacy → Project → (Project) → Pipelines → Configuration</td>
191
+ <td>监控</td>
192
+ <td>(集群)→(项目)→ 工具 → Monitoring</td>
193
+ <td>菜单 →(集群)→ 旧版项目 →(项目)→ Monitoring</td>
218
194
  </tr>
219
195
  <tr class="table-group">
220
- <td colspan="3">Other</td>
196
+ <td colspan="3">其他</td>
221
197
  </tr>
222
198
  <tr>
223
- <td>Kubeconfig download</td>
224
- <td>(Cluster) Cluster → Kubeconfig File</td>
225
- <td>Menu (Cluster)Cluster → File Icon (top-right)</td>
199
+ <td>Kubeconfig 下载</td>
200
+ <td>(集群)→ 集群 → Kubeconfig 文件</td>
201
+ <td>菜单 →(集群)→ 集群文件图标(右上角)</td>
226
202
  </tr>
227
203
  <tr>
228
- <td>CLI download</td>
229
- <td>Bottom Bar</td>
230
- <td>MenuVersion</td>
204
+ <td>CLI 下载</td>
205
+ <td>底栏</td>
206
+ <td>菜单版本</td>
231
207
  </tr>
232
208
  <tr>
233
- <td>Image Lists download</td>
234
- <td>Bottom Bar --> Version</td>
235
- <td>MenuVersion</td>
209
+ <td>镜像列表下载</td>
210
+ <td>底栏 版本</td>
211
+ <td>菜单版本</td>
236
212
  </tr>
237
213
  <tr>
238
- <td>API & Keys</td>
239
- <td>User Avatar → API & Keys</td>
240
- <td>User Avatar Account & API Keys</td>
214
+ <td>API &amp; 密钥</td>
215
+ <td>用户头像 → API 和密钥</td>
216
+ <td>用户头像账号 &amp; API 密钥</td>
241
217
  </tr>
242
218
  <tr>
243
- <td>Preferences</td>
244
- <td>User Avatar Preferences</td>
245
- <td>User Avatar Preferences</td>
246
- </tr>
219
+ <td>偏好设置</td>
220
+ <td>用户头像偏好设置</td>
221
+ <td>用户头像偏好设置</td>
222
+ </tr>
247
223
  </tbody>
248
224
  </table>