@rancher/shell 2.0.1 → 3.0.0-rc.2

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 (779) hide show
  1. package/assets/styles/base/_variables.scss +1 -0
  2. package/assets/styles/global/_labeled-input.scss +22 -11
  3. package/assets/styles/global/_layout.scss +4 -4
  4. package/assets/styles/global/_select.scss +1 -1
  5. package/assets/styles/global/_tooltip.scss +39 -72
  6. package/assets/translations/en-us.yaml +26 -5
  7. package/chart/__tests__/S3.test.ts +21 -14
  8. package/chart/example.vue +1 -1
  9. package/chart/gatekeeper.vue +4 -4
  10. package/chart/istio.vue +11 -11
  11. package/chart/logging/index.vue +8 -8
  12. package/chart/monitoring/ClusterSelector.vue +13 -13
  13. package/chart/monitoring/alerting/index.vue +6 -6
  14. package/chart/monitoring/grafana/index.vue +14 -14
  15. package/chart/monitoring/index.vue +122 -108
  16. package/chart/monitoring/prometheus/index.vue +18 -18
  17. package/chart/rancher-backup/S3.vue +11 -11
  18. package/chart/rancher-backup/index.vue +68 -60
  19. package/cloud-credential/__tests__/azure.test.ts +7 -17
  20. package/cloud-credential/__tests__/harvester.test.ts +2 -2
  21. package/cloud-credential/aws.vue +3 -3
  22. package/cloud-credential/azure.vue +4 -4
  23. package/cloud-credential/digitalocean.vue +1 -1
  24. package/cloud-credential/gcp.vue +1 -1
  25. package/cloud-credential/generic.vue +1 -1
  26. package/cloud-credential/harvester.vue +1 -1
  27. package/cloud-credential/linode.vue +1 -1
  28. package/cloud-credential/pnap.vue +2 -2
  29. package/cloud-credential/s3.vue +8 -8
  30. package/cloud-credential/vmwarevsphere.vue +4 -4
  31. package/components/ActionDropdown.vue +12 -16
  32. package/components/ActionMenu.vue +2 -2
  33. package/components/AlertTable.vue +1 -1
  34. package/components/AppModal.vue +20 -9
  35. package/components/AssignTo.vue +38 -37
  36. package/components/AsyncButton.vue +4 -7
  37. package/components/ButtonDropdown.vue +22 -20
  38. package/components/ButtonGroup.vue +1 -1
  39. package/components/Carousel.vue +1 -1
  40. package/components/Certificates.vue +1 -1
  41. package/components/ChartReadme.vue +7 -7
  42. package/components/CodeMirror.vue +2 -2
  43. package/components/CommunityLinks.vue +2 -2
  44. package/components/ConsumptionGauge.vue +1 -1
  45. package/components/ContainerResourceLimit.vue +11 -11
  46. package/components/CountGauge.vue +1 -1
  47. package/components/CreateDriver.vue +4 -4
  48. package/components/CruResource.vue +36 -20
  49. package/components/DashboardMetrics.vue +3 -3
  50. package/components/DashboardOptions.vue +3 -3
  51. package/components/DetailTop.vue +3 -3
  52. package/components/DisableAuthProviderModal.vue +7 -8
  53. package/components/EmberPage.vue +1 -1
  54. package/components/EtcdInfoBanner.vue +1 -1
  55. package/components/ExplorerMembers.vue +8 -9
  56. package/components/ExplorerProjectsNamespaces.vue +6 -7
  57. package/components/FileDiff.vue +1 -1
  58. package/components/FixedBanner.vue +1 -0
  59. package/components/GlobalRoleBindings.vue +5 -6
  60. package/components/GradientBox.vue +1 -2
  61. package/components/GrafanaDashboard.vue +7 -7
  62. package/components/GrowlManager.vue +1 -1
  63. package/components/HarvesterServiceAddOnConfig.vue +2 -2
  64. package/components/IconOrSvg.vue +1 -2
  65. package/components/Import.vue +4 -3
  66. package/components/Inactivity.vue +2 -2
  67. package/components/IndentedPanel.vue +0 -1
  68. package/components/InputOrDisplay.vue +21 -32
  69. package/components/KeyValueView.vue +4 -3
  70. package/components/LandingPagePreference.vue +3 -2
  71. package/components/LazyImage.vue +1 -1
  72. package/components/Loading.vue +1 -1
  73. package/components/LocaleSelector.vue +4 -4
  74. package/components/Markdown.vue +1 -1
  75. package/components/ModalWithCard.vue +1 -4
  76. package/components/MoveModal.vue +10 -11
  77. package/components/PercentageBar.vue +7 -7
  78. package/components/PodSecurityAdmission.vue +13 -13
  79. package/components/PromptChangePassword.vue +9 -9
  80. package/components/PromptModal.vue +1 -1
  81. package/components/PromptRemove.vue +35 -38
  82. package/components/PromptRestore.vue +68 -69
  83. package/components/Questions/Array.vue +3 -4
  84. package/components/Questions/Boolean.vue +1 -1
  85. package/components/Questions/CloudCredential.vue +1 -1
  86. package/components/Questions/Enum.vue +1 -1
  87. package/components/Questions/Float.vue +1 -1
  88. package/components/Questions/Int.vue +1 -1
  89. package/components/Questions/Question.js +1 -1
  90. package/components/Questions/QuestionMap.vue +3 -4
  91. package/components/Questions/Radio.vue +1 -1
  92. package/components/Questions/Reference.vue +2 -2
  93. package/components/Questions/String.vue +1 -1
  94. package/components/Questions/Yaml.vue +1 -1
  95. package/components/Questions/__tests__/Boolean.test.ts +24 -12
  96. package/components/Questions/__tests__/Float.test.ts +24 -12
  97. package/components/Questions/__tests__/Int.test.ts +24 -12
  98. package/components/Questions/__tests__/String.test.ts +24 -12
  99. package/components/Questions/__tests__/Yaml.test.ts +25 -13
  100. package/components/Questions/__tests__/utils/questions-defaults.ts +2 -2
  101. package/components/Questions/index.vue +10 -10
  102. package/components/Random.vue +1 -1
  103. package/components/ResourceDetail/Masthead.vue +7 -2
  104. package/components/ResourceDetail/index.vue +6 -3
  105. package/components/ResourceList/Masthead.vue +4 -0
  106. package/components/ResourceList/index.vue +10 -4
  107. package/components/ResourceSummary.vue +1 -1
  108. package/components/ResourceTable.vue +4 -5
  109. package/components/ResourceYaml.vue +1 -2
  110. package/components/RoleBindings.vue +3 -3
  111. package/components/SideNav.vue +10 -8
  112. package/components/SimpleBox.vue +0 -1
  113. package/components/SortableTable/THead.vue +5 -5
  114. package/components/SortableTable/index.vue +21 -20
  115. package/components/SortableTable/sortable-config.ts +4 -0
  116. package/components/StatusTable.vue +1 -1
  117. package/components/TabTitle.vue +3 -9
  118. package/components/Tabbed/Tab.vue +1 -1
  119. package/components/Tabbed/index.vue +2 -4
  120. package/components/Wizard.vue +8 -3
  121. package/components/YamlEditor.vue +4 -4
  122. package/components/__tests__/AppModal.test.ts +33 -25
  123. package/components/__tests__/ApplicationCard.test.ts +1 -1
  124. package/components/__tests__/AsyncButton.test.ts +42 -34
  125. package/components/__tests__/BackLink.test.ts +3 -3
  126. package/components/__tests__/ButtonGroup.test.ts +5 -5
  127. package/components/__tests__/Carousel.test.ts +2 -2
  128. package/components/__tests__/Certificates.test.ts +10 -8
  129. package/components/__tests__/ClusterBadge.test.ts +2 -2
  130. package/components/__tests__/CodeMirror.test.ts +29 -23
  131. package/components/__tests__/Collapse.test.ts +3 -3
  132. package/components/__tests__/CollapsibleCard.test.ts +6 -6
  133. package/components/__tests__/ConsumptionGauge.test.ts +5 -5
  134. package/components/__tests__/CruResource.test.ts +67 -56
  135. package/components/__tests__/EtcdInfoBanner.test.ts +11 -9
  136. package/components/__tests__/FixedBanner.test.ts +8 -8
  137. package/components/__tests__/GrowlManager.test.ts +24 -25
  138. package/components/__tests__/NamespaceFilter.test.ts +49 -32
  139. package/components/__tests__/PercentageBar.test.ts +10 -10
  140. package/components/__tests__/PodSecurityAdmission.test.ts +80 -38
  141. package/components/__tests__/ProjectRow.test.ts +1 -5
  142. package/components/__tests__/PromptRestore.test.ts +15 -18
  143. package/components/__tests__/TabTitle.test.ts +21 -14
  144. package/components/auth/AllowedPrincipals.vue +6 -7
  145. package/components/auth/RoleDetailEdit.vue +44 -46
  146. package/components/auth/SelectPrincipal.vue +3 -5
  147. package/components/auth/__tests__/RoleDetailEdit.test.ts +18 -14
  148. package/components/auth/login/ldap.vue +2 -2
  149. package/components/fleet/FleetClusters.vue +0 -1
  150. package/components/fleet/FleetRepos.vue +0 -1
  151. package/components/fleet/FleetStatus.vue +15 -16
  152. package/components/fleet/__tests__/FleetSummary.test.ts +8 -2
  153. package/components/form/ArrayList.vue +6 -7
  154. package/components/form/ArrayListGrouped.vue +20 -7
  155. package/components/form/ArrayListSelect.vue +4 -4
  156. package/components/form/BannerSettings.vue +10 -10
  157. package/components/form/ChangePassword.vue +9 -9
  158. package/components/form/ColorInput.vue +2 -2
  159. package/components/form/Command.vue +13 -15
  160. package/components/form/EnvVars.vue +7 -7
  161. package/components/form/FileImageSelector.vue +1 -1
  162. package/components/form/GitPicker.vue +7 -7
  163. package/components/form/HealthCheck.vue +4 -4
  164. package/components/form/HookOption.vue +13 -13
  165. package/components/form/InputWithSelect.vue +19 -13
  166. package/components/form/KeyValue.vue +13 -14
  167. package/components/form/LabeledSelect.vue +61 -46
  168. package/components/form/Labels.vue +3 -3
  169. package/components/form/LifecycleHooks.vue +5 -7
  170. package/components/form/MatchExpressions.vue +7 -7
  171. package/components/form/Members/ClusterMembershipEditor.vue +1 -2
  172. package/components/form/Members/ClusterPermissionsEditor.vue +9 -9
  173. package/components/form/Members/MembershipEditor.vue +4 -5
  174. package/components/form/Members/ProjectMembershipEditor.vue +1 -2
  175. package/components/form/NameNsDescription.vue +12 -13
  176. package/components/form/Networking.vue +17 -17
  177. package/components/form/NodeAffinity.vue +9 -10
  178. package/components/form/NodeScheduling.vue +7 -7
  179. package/components/form/NotificationSettings.vue +2 -2
  180. package/components/form/Password.vue +2 -2
  181. package/components/form/PodAffinity.vue +21 -23
  182. package/components/form/PodSecurity.vue +6 -6
  183. package/components/form/Ports.vue +5 -5
  184. package/components/form/Probe.vue +20 -20
  185. package/components/form/ProjectMemberEditor.vue +9 -9
  186. package/components/form/ResourceLabeledSelect.vue +11 -4
  187. package/components/form/ResourceQuota/Namespace.vue +3 -3
  188. package/components/form/ResourceQuota/NamespaceRow.vue +3 -3
  189. package/components/form/ResourceQuota/Project.vue +7 -6
  190. package/components/form/ResourceQuota/ProjectRow.vue +113 -114
  191. package/components/form/ResourceSelector.vue +3 -3
  192. package/components/form/ResourceTabs/index.vue +1 -1
  193. package/components/form/RuleSelector.vue +7 -6
  194. package/components/form/SecretSelector.vue +5 -6
  195. package/components/form/Security.vue +14 -14
  196. package/components/form/Select.vue +38 -12
  197. package/components/form/SelectOrCreateAuthSecret.vue +30 -27
  198. package/components/form/ServiceNameSelect.vue +8 -5
  199. package/components/form/ServicePorts.vue +4 -4
  200. package/components/form/ShellInput.vue +3 -3
  201. package/components/form/SimpleSecretSelector.vue +2 -2
  202. package/components/form/Taints.vue +5 -4
  203. package/components/form/Tolerations.vue +12 -12
  204. package/components/form/UnitInput.vue +1 -1
  205. package/components/form/ValueFromResource.vue +17 -17
  206. package/components/form/WorkloadPorts.vue +21 -21
  207. package/components/form/__tests__/ArrayList.test.ts +14 -11
  208. package/components/form/__tests__/ArrayListGrouped.test.ts +4 -4
  209. package/components/form/__tests__/BannerSettings.test.ts +6 -5
  210. package/components/form/__tests__/Command.test.ts +14 -13
  211. package/components/form/__tests__/Error.test.ts +5 -5
  212. package/components/form/__tests__/FileImageSelector.test.ts +5 -5
  213. package/components/form/__tests__/FileSelector.test.ts +9 -9
  214. package/components/form/__tests__/InputWithSelect.test.ts +42 -0
  215. package/components/form/__tests__/KeyValue.test.ts +28 -18
  216. package/components/form/__tests__/LabeledSelect.test.ts +9 -9
  217. package/components/form/__tests__/MatchExpressions.test.ts +10 -10
  218. package/components/form/__tests__/NameNsDescription.test.ts +28 -25
  219. package/components/form/__tests__/NodeAffinity.test.ts +4 -3
  220. package/components/form/__tests__/PodAffinity.test.ts +4 -3
  221. package/components/form/__tests__/Probe.test.ts +6 -6
  222. package/components/form/__tests__/Security.test.ts +6 -6
  223. package/components/form/__tests__/Select.test.ts +30 -0
  224. package/components/form/__tests__/ServiceNameSelect.test.ts +42 -0
  225. package/components/form/__tests__/Taints.test.ts +18 -17
  226. package/components/form/__tests__/UnitInput.test.ts +20 -24
  227. package/components/form/labeled-select-utils/labeled-select.utils.ts +1 -1
  228. package/components/formatter/AppSummaryGraph.vue +5 -5
  229. package/components/formatter/ClusterLink.vue +1 -1
  230. package/components/formatter/Endpoints.vue +4 -1
  231. package/components/formatter/FleetSummaryGraph.vue +5 -5
  232. package/components/formatter/ListLink.vue +1 -1
  233. package/components/formatter/ListLinkDetail.vue +2 -2
  234. package/components/formatter/LiveExpiryBadgeState.vue +18 -5
  235. package/components/formatter/LiveExpiryDate.vue +1 -1
  236. package/components/formatter/MachineSummaryGraph.vue +5 -5
  237. package/components/formatter/PercentageBar.vue +1 -1
  238. package/components/formatter/Principal.vue +0 -1
  239. package/components/formatter/PrincipalGroupBindings.vue +5 -5
  240. package/components/formatter/ReceiverIcons.vue +5 -3
  241. package/components/formatter/Scale.vue +5 -5
  242. package/components/formatter/ServiceTargets.vue +1 -1
  243. package/components/formatter/VirtualServiceGateways.vue +1 -1
  244. package/components/formatter/Weight.vue +3 -3
  245. package/components/formatter/WorkloadDetailEndpoints.vue +4 -1
  246. package/components/formatter/WorkloadHealthScale.vue +5 -6
  247. package/components/formatter/__tests__/Checked.test.ts +2 -2
  248. package/components/formatter/__tests__/ClusterLink.test.ts +3 -3
  249. package/components/formatter/__tests__/Date.test.ts +8 -8
  250. package/components/formatter/__tests__/LinkDetail.test.ts +10 -10
  251. package/components/formatter/__tests__/LiveDate.test.ts +21 -15
  252. package/components/formatter/__tests__/PodsUsage.test.ts +5 -5
  253. package/components/formatter/__tests__/Si.test.ts +3 -3
  254. package/components/formatter/__tests__/WorkloadDetailEndpoints.test.ts +5 -5
  255. package/components/graph/LinePlot.vue +1 -2
  256. package/components/nav/Group.vue +11 -6
  257. package/components/nav/Header.vue +182 -131
  258. package/components/nav/Jump.vue +1 -1
  259. package/components/nav/NamespaceFilter.vue +2 -2
  260. package/components/nav/TopLevelMenu.vue +18 -17
  261. package/components/nav/Type.vue +7 -7
  262. package/components/nav/WindowManager/ContainerLogs.vue +53 -38
  263. package/components/nav/WindowManager/ContainerShell.vue +45 -39
  264. package/components/nav/WindowManager/Window.vue +1 -1
  265. package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +34 -23
  266. package/components/nav/WindowManager/__tests__/ContainerShell.test.ts +41 -33
  267. package/components/nav/WindowManager/index.vue +4 -4
  268. package/components/nav/WorkspaceSwitcher.vue +16 -16
  269. package/components/nav/__tests__/TopLevelMenu.test.ts +354 -308
  270. package/components/nav/__tests__/Type.test.ts +194 -111
  271. package/components/nuxt/nuxt-build-indicator.vue +79 -52
  272. package/components/nuxt/nuxt-child.js +24 -25
  273. package/components/nuxt/nuxt-error.vue +48 -18
  274. package/components/nuxt/nuxt-link.client.js +4 -3
  275. package/components/nuxt/nuxt-loading.vue +96 -85
  276. package/components/templates/blank.vue +0 -1
  277. package/components/templates/default.vue +0 -4
  278. package/components/templates/home.vue +4 -4
  279. package/components/templates/plain.vue +3 -2
  280. package/composables/useI18n.ts +1 -1
  281. package/composables/useLabeledFormElement.ts +12 -1
  282. package/composables/useUserRetentionValidation.test.ts +178 -0
  283. package/composables/useUserRetentionValidation.ts +201 -0
  284. package/config/__test__/home-links.test.ts +2 -7
  285. package/config/pagination-table-headers.js +5 -4
  286. package/config/query-params.js +1 -0
  287. package/config/roles.ts +34 -19
  288. package/config/router/index.js +10 -7
  289. package/config/router/navigation-guards/attempt-first-login.js +1 -1
  290. package/config/router/navigation-guards/authentication.js +2 -1
  291. package/{middleware/authenticated.js → config/router/navigation-guards/clusters.js} +28 -67
  292. package/config/router/navigation-guards/history.js +13 -0
  293. package/config/router/navigation-guards/i18n.js +1 -1
  294. package/config/router/navigation-guards/index.js +8 -1
  295. package/config/router/navigation-guards/install-redirect.js +95 -0
  296. package/config/router/navigation-guards/load-initial-settings.js +1 -1
  297. package/config/router/navigation-guards/page-title.js +12 -0
  298. package/config/router/navigation-guards/products.js +15 -0
  299. package/config/router/navigation-guards/runtime-extension-route.js +31 -0
  300. package/config/router/navigation-guards/server-upgrade-growl.js +19 -0
  301. package/config/router/routes.js +49 -23
  302. package/config/settings.ts +1 -1
  303. package/config/store.js +2 -5
  304. package/config/types.js +18 -0
  305. package/config/uiplugins.js +2 -2
  306. package/core/plugin-routes.ts +40 -30
  307. package/core/plugin.ts +10 -10
  308. package/core/plugins-loader.js +3 -3
  309. package/core/plugins.js +7 -1
  310. package/core/types.ts +7 -7
  311. package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +16 -8
  312. package/detail/__tests__/provisioning.cattle.io.cluster.test.ts +8 -8
  313. package/detail/__tests__/service.test.ts +6 -6
  314. package/detail/autoscaling.horizontalpodautoscaler/index.vue +6 -5
  315. package/detail/catalog.cattle.io.app.vue +2 -2
  316. package/detail/cis.cattle.io.clusterscan.vue +3 -3
  317. package/detail/configmap.vue +4 -1
  318. package/detail/fleet.cattle.io.cluster.vue +2 -1
  319. package/detail/fleet.cattle.io.clustergroup.vue +2 -1
  320. package/detail/fleet.cattle.io.gitrepo.vue +2 -1
  321. package/detail/harvesterhci.io.management.cluster.vue +2 -1
  322. package/detail/helm.cattle.io.projecthelmchart.vue +28 -29
  323. package/detail/management.cattle.io.user.vue +2 -1
  324. package/detail/namespace.vue +2 -1
  325. package/detail/networking.k8s.io.ingress.vue +4 -2
  326. package/detail/node.vue +2 -1
  327. package/detail/provisioning.cattle.io.cluster.vue +6 -7
  328. package/detail/secret.vue +3 -2
  329. package/detail/service.vue +2 -1
  330. package/detail/workload/index.vue +1 -19
  331. package/dialog/AddClusterMemberDialog.vue +30 -31
  332. package/dialog/AddCustomBadgeDialog.vue +101 -104
  333. package/dialog/AddProjectMemberDialog.vue +45 -46
  334. package/dialog/AddonConfigConfirmationDialog.vue +22 -24
  335. package/dialog/DeactivateDriverDialog.vue +5 -6
  336. package/dialog/DiagnosticTimingsDialog.vue +29 -29
  337. package/dialog/DrainNode.vue +245 -249
  338. package/dialog/ForceMachineRemoveDialog.vue +32 -34
  339. package/dialog/GenericPrompt.vue +23 -25
  340. package/dialog/RollbackWorkloadDialog.vue +68 -71
  341. package/dialog/RotateCertificatesDialog.vue +17 -18
  342. package/dialog/RotateEncryptionKeyDialog.vue +46 -47
  343. package/dialog/SaveAsRKETemplateDialog.vue +46 -47
  344. package/dialog/ScaleMachineDownDialog.vue +3 -3
  345. package/dialog/ScalePoolDownDialog.vue +22 -24
  346. package/dialog/SloDialog.vue +95 -0
  347. package/directives/clean-html.js +3 -3
  348. package/directives/clean-tooltip.js +1 -1
  349. package/directives/focus.js +17 -11
  350. package/directives/int-number.js +2 -2
  351. package/directives/positive-int-number.js +2 -2
  352. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +7 -13
  353. package/edit/__tests__/kontainerDriver.test.ts +23 -20
  354. package/edit/__tests__/management.cattle.io.clusterroletemplatebinding.test.ts +31 -29
  355. package/edit/__tests__/management.cattle.io.setting.test.ts +20 -18
  356. package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +17 -15
  357. package/edit/__tests__/namespace.test.ts +28 -27
  358. package/edit/__tests__/nodeDriver.test.ts +35 -53
  359. package/edit/__tests__/service.test.ts +32 -17
  360. package/edit/__tests__/ui.cattle.io.navlink.test.ts +22 -20
  361. package/edit/auth/__tests__/AuthProviderWarningBanners.test.ts +2 -2
  362. package/edit/auth/__tests__/azuread.test.ts +43 -46
  363. package/edit/auth/__tests__/oidc.test.ts +36 -39
  364. package/edit/auth/azuread.vue +16 -23
  365. package/edit/auth/github.vue +6 -6
  366. package/edit/auth/googleoauth.vue +7 -7
  367. package/edit/auth/ldap/config.vue +29 -29
  368. package/edit/auth/ldap/index.vue +5 -5
  369. package/edit/auth/oidc.vue +18 -18
  370. package/edit/auth/saml.vue +94 -24
  371. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +2 -2
  372. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +7 -7
  373. package/edit/autoscaling.horizontalpodautoscaler/index.vue +18 -16
  374. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +3 -3
  375. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +3 -3
  376. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +12 -12
  377. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +5 -5
  378. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +3 -3
  379. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +2 -2
  380. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  381. package/edit/catalog.cattle.io.clusterrepo.vue +31 -32
  382. package/edit/cis.cattle.io.clusterscan.vue +9 -9
  383. package/edit/cis.cattle.io.clusterscanbenchmark.vue +7 -7
  384. package/edit/cis.cattle.io.clusterscanprofile.vue +3 -3
  385. package/edit/cloudcredential.vue +13 -8
  386. package/edit/configmap.vue +7 -7
  387. package/edit/constraints.gatekeeper.sh.constraint/MatchKinds.vue +3 -3
  388. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
  389. package/edit/constraints.gatekeeper.sh.constraint/Scope.vue +1 -1
  390. package/edit/constraints.gatekeeper.sh.constraint/index.vue +21 -22
  391. package/edit/fleet.cattle.io.cluster.vue +2 -1
  392. package/edit/fleet.cattle.io.clustergroup.vue +6 -5
  393. package/edit/fleet.cattle.io.gitrepo.vue +18 -18
  394. package/edit/helm.cattle.io.projecthelmchart.vue +4 -4
  395. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +3 -2
  396. package/edit/logging-flow/Match.vue +4 -4
  397. package/edit/logging-flow/index.vue +11 -10
  398. package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +79 -73
  399. package/edit/logging.banzaicloud.io.output/index.vue +4 -4
  400. package/edit/logging.banzaicloud.io.output/providers/__tests__/loki.test.ts +1 -1
  401. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +3 -3
  402. package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +5 -5
  403. package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +6 -6
  404. package/edit/logging.banzaicloud.io.output/providers/datadog.vue +4 -4
  405. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +16 -16
  406. package/edit/logging.banzaicloud.io.output/providers/file.vue +1 -1
  407. package/edit/logging.banzaicloud.io.output/providers/forward.vue +9 -9
  408. package/edit/logging.banzaicloud.io.output/providers/gcs.vue +5 -5
  409. package/edit/logging.banzaicloud.io.output/providers/gelf.vue +14 -14
  410. package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
  411. package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +3 -3
  412. package/edit/logging.banzaicloud.io.output/providers/logdna.vue +3 -3
  413. package/edit/logging.banzaicloud.io.output/providers/logz.vue +5 -5
  414. package/edit/logging.banzaicloud.io.output/providers/loki.vue +10 -10
  415. package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
  416. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +15 -15
  417. package/edit/logging.banzaicloud.io.output/providers/redis.vue +5 -5
  418. package/edit/logging.banzaicloud.io.output/providers/s3.vue +7 -7
  419. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +12 -12
  420. package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
  421. package/edit/logging.banzaicloud.io.output/providers/syslog.vue +19 -19
  422. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
  423. package/edit/management.cattle.io.fleetworkspace.vue +9 -7
  424. package/edit/management.cattle.io.node.vue +4 -3
  425. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +3 -2
  426. package/edit/management.cattle.io.project.vue +13 -10
  427. package/edit/management.cattle.io.projectroletemplatebinding.vue +3 -3
  428. package/edit/management.cattle.io.setting.vue +6 -6
  429. package/edit/management.cattle.io.user.vue +4 -4
  430. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +4 -4
  431. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +2 -1
  432. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -5
  433. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +11 -11
  434. package/edit/monitoring.coreos.com.alertmanagerconfig/tls.vue +2 -2
  435. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +10 -9
  436. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  437. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +5 -5
  438. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +5 -5
  439. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +9 -9
  440. package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +36 -36
  441. package/edit/monitoring.coreos.com.prometheusrule/RecordingRule.vue +4 -4
  442. package/edit/monitoring.coreos.com.prometheusrule/index.vue +9 -9
  443. package/edit/monitoring.coreos.com.receiver/auth.vue +9 -9
  444. package/edit/monitoring.coreos.com.receiver/index.vue +8 -8
  445. package/edit/monitoring.coreos.com.receiver/tls.vue +4 -4
  446. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +20 -16
  447. package/edit/monitoring.coreos.com.receiver/types/email.vue +12 -11
  448. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +11 -11
  449. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +6 -6
  450. package/edit/monitoring.coreos.com.receiver/types/slack.vue +6 -6
  451. package/edit/monitoring.coreos.com.receiver/types/webhook.vue +7 -7
  452. package/edit/monitoring.coreos.com.route.vue +10 -10
  453. package/edit/namespace.vue +10 -8
  454. package/edit/networking.istio.io.destinationrule/LoadBalancer.vue +12 -12
  455. package/edit/networking.istio.io.destinationrule/index.vue +15 -15
  456. package/edit/networking.k8s.io.ingress/Certificate.vue +5 -5
  457. package/edit/networking.k8s.io.ingress/Certificates.vue +2 -2
  458. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +18 -18
  459. package/edit/networking.k8s.io.ingress/IngressClass.vue +1 -1
  460. package/edit/networking.k8s.io.ingress/Rule.vue +9 -7
  461. package/edit/networking.k8s.io.ingress/RulePath.vue +10 -10
  462. package/edit/networking.k8s.io.ingress/Rules.vue +3 -3
  463. package/edit/networking.k8s.io.ingress/index.vue +15 -10
  464. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +4 -4
  465. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +1 -1
  466. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +47 -32
  467. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +3 -3
  468. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +27 -26
  469. package/edit/networking.k8s.io.networkpolicy/index.vue +18 -16
  470. package/edit/node.vue +6 -5
  471. package/edit/nodeDriver.vue +6 -1
  472. package/edit/persistentvolume/__tests__/persistentvolume.test.ts +60 -49
  473. package/edit/persistentvolume/index.vue +26 -26
  474. package/edit/persistentvolume/plugins/awsElasticBlockStore.vue +8 -8
  475. package/edit/persistentvolume/plugins/azureDisk.vue +10 -10
  476. package/edit/persistentvolume/plugins/azureFile.vue +6 -6
  477. package/edit/persistentvolume/plugins/cephfs.vue +10 -10
  478. package/edit/persistentvolume/plugins/cinder.vue +8 -8
  479. package/edit/persistentvolume/plugins/csi.vue +18 -18
  480. package/edit/persistentvolume/plugins/fc.vue +9 -9
  481. package/edit/persistentvolume/plugins/flexVolume.vue +9 -9
  482. package/edit/persistentvolume/plugins/flocker.vue +3 -3
  483. package/edit/persistentvolume/plugins/gcePersistentDisk.vue +8 -8
  484. package/edit/persistentvolume/plugins/glusterfs.vue +5 -5
  485. package/edit/persistentvolume/plugins/hostPath.vue +4 -4
  486. package/edit/persistentvolume/plugins/iscsi.vue +18 -18
  487. package/edit/persistentvolume/plugins/local.vue +2 -2
  488. package/edit/persistentvolume/plugins/longhorn.vue +8 -8
  489. package/edit/persistentvolume/plugins/nfs.vue +5 -5
  490. package/edit/persistentvolume/plugins/photonPersistentDisk.vue +5 -5
  491. package/edit/persistentvolume/plugins/portworxVolume.vue +6 -6
  492. package/edit/persistentvolume/plugins/quobyte.vue +7 -7
  493. package/edit/persistentvolume/plugins/rbd.vue +12 -12
  494. package/edit/persistentvolume/plugins/scaleIO.vue +15 -15
  495. package/edit/persistentvolume/plugins/storageos.vue +9 -9
  496. package/edit/persistentvolume/plugins/vsphereVolume.vue +5 -5
  497. package/edit/persistentvolumeclaim.vue +29 -28
  498. package/edit/policy.poddisruptionbudget.vue +15 -14
  499. package/edit/provisioning.cattle.io.cluster/AgentEnv.vue +1 -1
  500. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +10 -10
  501. package/edit/provisioning.cattle.io.cluster/Labels.vue +12 -1
  502. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +5 -5
  503. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +40 -36
  504. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +170 -79
  505. package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.test.ts +16 -14
  506. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +38 -8
  507. package/edit/provisioning.cattle.io.cluster/__tests__/DrainOptions.test.ts +14 -12
  508. package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +18 -19
  509. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +292 -84
  510. package/edit/provisioning.cattle.io.cluster/import.vue +7 -4
  511. package/edit/provisioning.cattle.io.cluster/index.vue +32 -13
  512. package/edit/provisioning.cattle.io.cluster/rke2.vue +155 -78
  513. package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +5 -5
  514. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +10 -11
  515. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +12 -11
  516. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +62 -24
  517. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +9 -9
  518. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +12 -12
  519. package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +15 -15
  520. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +6 -6
  521. package/edit/provisioning.cattle.io.cluster/tabs/networking/ACE.vue +3 -3
  522. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +18 -9
  523. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +16 -12
  524. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryMirrors.vue +4 -4
  525. package/edit/provisioning.cattle.io.cluster/tabs/registries/__tests__/RegistryConfigs.test.ts +63 -0
  526. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +8 -6
  527. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/DrainOptions.vue +15 -15
  528. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/index.vue +4 -4
  529. package/edit/resources.cattle.io.backup.vue +9 -9
  530. package/edit/resources.cattle.io.restore.vue +11 -11
  531. package/edit/secret/basic.vue +2 -2
  532. package/edit/secret/generic.vue +1 -1
  533. package/edit/secret/index.vue +12 -10
  534. package/edit/secret/registry.vue +4 -4
  535. package/edit/secret/ssh.vue +2 -2
  536. package/edit/secret/tls.vue +2 -2
  537. package/edit/service.vue +25 -25
  538. package/edit/serviceaccount.vue +7 -7
  539. package/edit/storage.k8s.io.storageclass/index.vue +16 -16
  540. package/edit/storage.k8s.io.storageclass/provisioners/custom.vue +1 -1
  541. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +2 -2
  542. package/edit/storage.k8s.io.storageclass/provisioners/driver.longhorn.io.vue +4 -4
  543. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +12 -12
  544. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/azure-disk.vue +3 -3
  545. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/azure-file.vue +3 -3
  546. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/cinder.vue +4 -4
  547. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +6 -6
  548. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/glusterfs.vue +9 -9
  549. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/portworx-volume.vue +7 -7
  550. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/quobyte.vue +8 -8
  551. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/rbd.vue +11 -11
  552. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/scaleio.vue +8 -8
  553. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/storageos.vue +5 -5
  554. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +7 -7
  555. package/edit/token.vue +4 -4
  556. package/edit/ui.cattle.io.navlink.vue +28 -27
  557. package/edit/workload/Job.vue +18 -18
  558. package/edit/workload/Upgrading.vue +16 -16
  559. package/edit/workload/VolumeClaimTemplate.vue +3 -3
  560. package/edit/workload/__tests__/Job.test.ts +10 -10
  561. package/edit/workload/__tests__/index.test.ts +32 -29
  562. package/edit/workload/index.vue +31 -30
  563. package/edit/workload/mixins/workload.js +30 -30
  564. package/edit/workload/storage/ContainerMountPaths.vue +3 -4
  565. package/edit/workload/storage/Mount.vue +10 -7
  566. package/edit/workload/storage/__tests__/Mount.test.ts +17 -13
  567. package/edit/workload/storage/__tests__/Storage.test.ts +26 -20
  568. package/edit/workload/storage/awsElasticBlockStore.vue +4 -4
  569. package/edit/workload/storage/azureDisk.vue +7 -7
  570. package/edit/workload/storage/azureFile.vue +5 -5
  571. package/edit/workload/storage/csi/driver.longhorn.io.vue +3 -3
  572. package/edit/workload/storage/csi/index.vue +4 -4
  573. package/edit/workload/storage/emptyDir.vue +4 -4
  574. package/edit/workload/storage/ephemeralVolume/index.vue +3 -3
  575. package/edit/workload/storage/gcePersistentDisk.vue +4 -4
  576. package/edit/workload/storage/hostPath.vue +4 -4
  577. package/edit/workload/storage/index.vue +13 -27
  578. package/edit/workload/storage/nfs.vue +4 -4
  579. package/edit/workload/storage/persistentVolumeClaim/__tests__/persistentvolumeclaim.test.ts +18 -16
  580. package/edit/workload/storage/persistentVolumeClaim/index.vue +5 -5
  581. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +15 -15
  582. package/edit/workload/storage/secret.vue +9 -9
  583. package/edit/workload/storage/vsphereVolume.vue +4 -4
  584. package/initialize/App.vue +10 -8
  585. package/initialize/app-extended.js +14 -30
  586. package/initialize/entry-helpers.js +29 -428
  587. package/initialize/entry.js +11 -10
  588. package/initialize/install-plugins.js +15 -13
  589. package/list/__tests__/workload.test.ts +22 -20
  590. package/list/catalog.cattle.io.app.vue +1 -1
  591. package/list/cis.cattle.io.clusterscan.vue +1 -2
  592. package/list/fleet.cattle.io.clustergroup.vue +0 -1
  593. package/list/group.principal.vue +1 -1
  594. package/list/management.cattle.io.feature.vue +23 -29
  595. package/list/management.cattle.io.fleetworkspace.vue +0 -1
  596. package/list/management.cattle.io.setting.vue +2 -2
  597. package/list/management.cattle.io.user.vue +1 -1
  598. package/list/namespace.vue +0 -1
  599. package/list/node.vue +4 -5
  600. package/list/provisioning.cattle.io.cluster.vue +1 -1
  601. package/list/rbac.authorization.k8s.io.clusterrolebinding.vue +0 -1
  602. package/machine-config/__tests__/vmwarevsphere.test.ts +10 -7
  603. package/machine-config/amazonec2.vue +26 -26
  604. package/machine-config/azure.vue +31 -31
  605. package/machine-config/digitalocean.vue +8 -8
  606. package/machine-config/generic.vue +2 -1
  607. package/machine-config/linode.vue +4 -4
  608. package/machine-config/pnap.vue +11 -11
  609. package/machine-config/vmwarevsphere-config.ts +17 -0
  610. package/machine-config/vmwarevsphere.vue +400 -410
  611. package/mixins/__tests__/chart.test.ts +45 -24
  612. package/mixins/auth-config.js +37 -11
  613. package/mixins/chart.js +31 -15
  614. package/mixins/compact-input.ts +2 -3
  615. package/mixins/labeled-form-element.ts +8 -3
  616. package/mixins/page-actions.js +1 -1
  617. package/mixins/resource-fetch.js +4 -3
  618. package/models/__tests__/apps.deployment.test.ts +93 -0
  619. package/models/apps.deployment.js +18 -4
  620. package/models/apps.statefulset.js +1 -2
  621. package/models/batch.cronjob.js +1 -2
  622. package/models/catalog.cattle.io.clusterrepo.js +1 -2
  623. package/models/fleet.cattle.io.gitrepo.js +1 -2
  624. package/models/helm.cattle.io.projecthelmchart.js +2 -3
  625. package/models/management.cattle.io.cluster.js +2 -2
  626. package/models/management.cattle.io.roletemplate.js +2 -3
  627. package/models/namespace.js +1 -2
  628. package/models/networking.istio.io.destinationrule.js +2 -3
  629. package/models/persistentvolumeclaim.js +2 -3
  630. package/models/provisioning.cattle.io.cluster.js +4 -0
  631. package/models/workload.js +2 -2
  632. package/package.json +44 -43
  633. package/pages/404.vue +15 -0
  634. package/pages/__tests__/prefs.test.ts +44 -44
  635. package/pages/about.vue +4 -4
  636. package/pages/account/index.vue +1 -2
  637. package/pages/auth/login.vue +29 -9
  638. package/pages/auth/logout.vue +23 -1
  639. package/pages/auth/setup.vue +35 -31
  640. package/pages/auth/verify.vue +38 -5
  641. package/pages/c/_cluster/_product/namespaces.vue +1 -2
  642. package/pages/c/_cluster/apps/charts/chart.vue +4 -4
  643. package/pages/c/_cluster/apps/charts/index.vue +16 -16
  644. package/pages/c/_cluster/apps/charts/install.vue +46 -80
  645. package/pages/c/_cluster/auth/config/index.vue +2 -2
  646. package/pages/c/_cluster/auth/roles/index.vue +2 -2
  647. package/pages/c/_cluster/auth/user.retention/index.vue +34 -95
  648. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  649. package/pages/c/_cluster/explorer/__tests__/index.test.ts +32 -34
  650. package/pages/c/_cluster/explorer/index.vue +9 -6
  651. package/pages/c/_cluster/explorer/tools/__tests__/index.test.ts +22 -20
  652. package/pages/c/_cluster/fleet/index.vue +5 -6
  653. package/pages/c/_cluster/gatekeeper/index.vue +4 -5
  654. package/pages/c/_cluster/istio/index.vue +6 -8
  655. package/pages/c/_cluster/logging/index.vue +9 -5
  656. package/pages/c/_cluster/longhorn/__tests__/longhorn.index.test.ts +7 -4
  657. package/pages/c/_cluster/longhorn/index.vue +2 -9
  658. package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +1 -1
  659. package/pages/c/_cluster/manager/jwt.authentication/index.vue +14 -5
  660. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +1 -1
  661. package/pages/c/_cluster/monitoring/index.vue +8 -10
  662. package/pages/c/_cluster/neuvector/index.vue +7 -10
  663. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +7 -9
  664. package/pages/c/_cluster/settings/banners.vue +82 -84
  665. package/pages/c/_cluster/settings/brand.vue +21 -19
  666. package/pages/c/_cluster/settings/links.vue +6 -4
  667. package/pages/c/_cluster/settings/performance.vue +25 -21
  668. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +2 -2
  669. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +43 -45
  670. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +5 -5
  671. package/pages/c/_cluster/uiplugins/InstallDialog.vue +1 -1
  672. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +3 -3
  673. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +17 -34
  674. package/pages/c/_cluster/uiplugins/__tests__/SetupUIPlugins.test.ts +12 -9
  675. package/pages/c/_cluster/uiplugins/index.vue +173 -176
  676. package/pages/diagnostic.vue +6 -9
  677. package/pages/fail-whale.vue +3 -1
  678. package/pages/home.vue +8 -17
  679. package/pages/index.vue +17 -16
  680. package/pages/prefs.vue +12 -12
  681. package/pages/support/index.vue +3 -3
  682. package/pkg/tsconfig.json +0 -1
  683. package/plugins/dashboard-store/actions.js +1 -1
  684. package/plugins/dashboard-store/getters.js +1 -1
  685. package/plugins/dashboard-store/index.js +2 -0
  686. package/plugins/dashboard-store/mutations.js +5 -5
  687. package/plugins/dashboard-store/resource-class.js +5 -5
  688. package/plugins/extend-router.js +62 -42
  689. package/plugins/floating-vue.js +1 -0
  690. package/plugins/formatters.js +1 -1
  691. package/plugins/global-formatters.js +3 -14
  692. package/plugins/i18n.js +17 -22
  693. package/plugins/shortkey.js +273 -0
  694. package/plugins/steve/__tests__/getters.test.ts +6 -3
  695. package/plugins/steve/getters.js +6 -4
  696. package/plugins/steve/hybrid-class.js +7 -12
  697. package/plugins/steve/mutations.js +1 -2
  698. package/plugins/steve/norman-class.js +10 -11
  699. package/plugins/steve/subscribe.js +3 -1
  700. package/promptRemove/management.cattle.io.globalrole.vue +1 -5
  701. package/promptRemove/management.cattle.io.project.vue +1 -1
  702. package/promptRemove/pod.vue +1 -1
  703. package/public/index.html +53 -52
  704. package/rancher-components/BadgeState/BadgeState.test.ts +1 -1
  705. package/rancher-components/BadgeState/BadgeState.vue +1 -1
  706. package/rancher-components/Banner/Banner.test.ts +2 -2
  707. package/rancher-components/Form/Checkbox/Checkbox.test.ts +5 -5
  708. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -4
  709. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +5 -5
  710. package/rancher-components/Form/LabeledInput/LabeledInput.vue +15 -4
  711. package/rancher-components/Form/Radio/RadioButton.vue +3 -2
  712. package/rancher-components/Form/Radio/RadioGroup.test.ts +6 -9
  713. package/rancher-components/Form/Radio/RadioGroup.vue +4 -5
  714. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +18 -1
  715. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +13 -13
  716. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -1
  717. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  718. package/rancher-components/StringList/StringList.test.ts +22 -22
  719. package/rancher-components/StringList/StringList.vue +10 -9
  720. package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
  721. package/scripts/publish-shell.sh +52 -58
  722. package/scripts/test-plugins-build.sh +44 -38
  723. package/scripts/vue-migrate.js +7 -4
  724. package/shell/types/shell/index.d.ts +2 -0
  725. package/store/__tests__/catalog.test.ts +4 -21
  726. package/store/auth.js +28 -10
  727. package/store/index.js +16 -8
  728. package/store/prefs.js +3 -4
  729. package/types/resources/settings.d.ts +54 -0
  730. package/types/store/pagination.types.ts +1 -1
  731. package/utils/auth.js +21 -6
  732. package/utils/axios.js +1 -1
  733. package/utils/download.js +1 -1
  734. package/utils/dynamic-importer.js +14 -12
  735. package/utils/error.js +4 -4
  736. package/utils/object.js +4 -5
  737. package/utils/router.js +7 -1
  738. package/utils/select.js +1 -1
  739. package/utils/settings.ts +3 -1
  740. package/utils/unit-tests/ChildRenderingRouterLinkStub.ts +4 -4
  741. package/vue.config.js +171 -145
  742. package/config/middleware.js +0 -6
  743. package/config/nuxt-paths.js +0 -7
  744. package/creators/app/app.package.json +0 -14
  745. package/creators/app/files/.eslintignore +0 -16
  746. package/creators/app/files/.eslintrc.js +0 -173
  747. package/creators/app/files/.gitignore +0 -70
  748. package/creators/app/files/.gitlab-ci.yml +0 -14
  749. package/creators/app/files/.vscode/settings.json +0 -21
  750. package/creators/app/files/babel.config.js +0 -1
  751. package/creators/app/files/tsconfig.json +0 -42
  752. package/creators/app/files/vue.config.js +0 -6
  753. package/creators/app/init +0 -120
  754. package/creators/app/package.json +0 -25
  755. package/creators/pkg/files/.github/workflows/build-extension-catalog.yml +0 -24
  756. package/creators/pkg/files/.github/workflows/build-extension-charts.yml +0 -22
  757. package/creators/pkg/files/babel.config.js +0 -1
  758. package/creators/pkg/files/index.ts +0 -14
  759. package/creators/pkg/files/tsconfig.json +0 -53
  760. package/creators/pkg/files/vue.config.js +0 -1
  761. package/creators/pkg/init +0 -286
  762. package/creators/pkg/package.json +0 -19
  763. package/creators/pkg/pkg.package.json +0 -21
  764. package/creators/pkg/vue-shim.ts +0 -4
  765. package/creators/update/init +0 -56
  766. package/creators/update/package.json +0 -20
  767. package/creators/update/upgrade +0 -56
  768. package/pages/c/_cluster/backup/index.vue +0 -11
  769. package/pages/c/_cluster/cis/index.vue +0 -11
  770. package/plugins/clean-html-directive.js +0 -9
  771. package/plugins/clean-tooltip-directive.js +0 -8
  772. package/plugins/directives.js +0 -8
  773. package/plugins/int-number.js +0 -8
  774. package/plugins/positive-int-number.js +0 -8
  775. package/plugins/trim-whitespace.js +0 -9
  776. package/plugins/vue-js-modal.js +0 -4
  777. package/types/shell/index.d.ts +0 -4585
  778. package/utils/install-redirect.js +0 -55
  779. /package/utils/{cookie-universal-nuxt.js → cookie-universal.js} +0 -0
@@ -1,78 +1,40 @@
1
1
  import { DEFAULT_WORKSPACE } from '@shell/config/types';
2
- import { applyProducts } from '@shell/store/type-map';
3
2
  import { ClusterNotFoundError, RedirectToError } from '@shell/utils/error';
4
3
  import { get } from '@shell/utils/object';
5
4
  import { AFTER_LOGIN_ROUTE, WORKSPACE } from '@shell/store/prefs';
6
- import { BACK_TO } from '@shell/config/local-storage';
7
5
  import { NAME as FLEET_NAME } from '@shell/config/product/fleet.js';
8
6
  import { validateResource, setProduct } from '@shell/utils/auth';
9
- import { getClusterFromRoute, getProductFromRoute, getPackageFromRoute } from '@shell/utils/router';
7
+ import { getClusterFromRoute, getProductFromRoute, getPackageFromRoute, routeRequiresAuthentication } from '@shell/utils/router';
10
8
 
11
- let beforeEachSetup = false;
12
-
13
- export default async function({
14
- route, store, redirect, from, $plugin, next
15
- }) {
16
- if ( store.getters['auth/enabled'] !== false && !store.getters['auth/loggedIn'] ) {
17
- return;
18
- }
19
-
20
- const backTo = window.localStorage.getItem(BACK_TO);
21
-
22
- if (backTo) {
23
- window.localStorage.removeItem(BACK_TO);
24
-
25
- window.location.href = backTo;
26
- }
27
-
28
- // GC should be notified of route change before any find/get request is made that might be used for that page
29
- store.dispatch('gcRouteChanged', route);
30
-
31
- // Load stuff
32
- let localCheckResource = false;
33
-
34
- await applyProducts(store, $plugin);
35
-
36
- // Setup a beforeEach hook once to keep track of the current product
37
- if ( !beforeEachSetup ) {
38
- beforeEachSetup = true;
39
- // This only needs to happen when beforeEach hook hasn't run (the initial load)
40
- localCheckResource = true;
41
-
42
- store.app.router.beforeEach((to, from, next) => {
43
- // NOTE - This beforeEach runs AFTER this middleware. So anything in this middleware that requires it must set it manually
44
- setProduct(store, to);
45
-
46
- next();
47
- });
48
-
49
- // Call it for the initial pageload
50
- setProduct(store, route);
9
+ export function install(router, context) {
10
+ router.beforeEach((to, from, next) => loadClusters(to, from, next, context));
11
+ }
51
12
 
52
- store.app.router.afterEach((to, from) => {
53
- // Clear state used to record if back button was used for navigation
54
- setTimeout(() => {
55
- window._popStateDetected = false;
56
- }, 1);
57
- });
13
+ export async function loadClusters(to, from, next, { store }) {
14
+ if (!routeRequiresAuthentication(to)) {
15
+ return next();
58
16
  }
59
17
 
60
18
  try {
61
- let clusterId = get(route, 'params.cluster');
19
+ let clusterId = get(to, 'params.cluster');
62
20
 
63
21
  // Route can provide cluster ID via metadata
64
- if (!clusterId && route) {
65
- clusterId = getClusterFromRoute(route);
22
+ if (!clusterId && to) {
23
+ clusterId = getClusterFromRoute(to);
66
24
  }
67
25
 
68
- const pkg = getPackageFromRoute(route);
69
- const product = getProductFromRoute(route);
26
+ const pkg = getPackageFromRoute(to);
27
+ const product = getProductFromRoute(to);
70
28
 
71
29
  const oldPkg = getPackageFromRoute(from);
72
30
  const oldProduct = getProductFromRoute(from);
73
31
 
32
+ // TODO: Replace all references to store.$plugin.
33
+ // Unfortunately the initialization code has circular dependencies between creating
34
+ // the router and creating the store that will need to be untangled before this can be tackled.
35
+
74
36
  // Leave an old pkg where we weren't before?
75
- const oldPkgPlugin = oldPkg ? Object.values($plugin.getPlugins()).find((p) => p.name === oldPkg) : null;
37
+ const oldPkgPlugin = oldPkg ? Object.values(store.$plugin.getPlugins()).find((p) => p.name === oldPkg) : null;
76
38
 
77
39
  if (oldPkg && oldPkg !== pkg ) {
78
40
  // Execute anything optional the plugin wants to. For example resetting it's store to remove data
@@ -90,10 +52,10 @@ export default async function({
90
52
  ];
91
53
 
92
54
  // Entering a new package where we weren't before?
93
- const newPkgPlugin = pkg ? Object.values($plugin.getPlugins()).find((p) => p.name === pkg) : null;
55
+ const newPkgPlugin = pkg ? Object.values(store.$plugin.getPlugins()).find((p) => p.name === pkg) : null;
94
56
 
95
57
  // Note - We can't block on oldPkg !== newPkg because on a fresh load the `from` route equals the `to` route
96
- if (pkg && (oldPkg !== pkg || from.fullPath === route.fullPath)) {
58
+ if (pkg && (oldPkg !== pkg || from.fullPath === to.fullPath)) {
97
59
  // Execute mandatory store actions
98
60
  await Promise.all(always);
99
61
 
@@ -110,7 +72,7 @@ export default async function({
110
72
  // When fleet moves to it's own package this should be moved to pkg onEnter/onLeave
111
73
  if ((oldProduct === FLEET_NAME || product === FLEET_NAME) && oldProduct !== product) {
112
74
  // See note above for store.app.router.beforeEach, need to setProduct manually, for the moment do this in a targeted way
113
- setProduct(store, route);
75
+ setProduct(store, to);
114
76
 
115
77
  store.commit('updateWorkspace', {
116
78
  value: store.getters['prefs/get'](WORKSPACE) || DEFAULT_WORKSPACE,
@@ -128,13 +90,11 @@ export default async function({
128
90
  newPkg: newPkgPlugin,
129
91
  product,
130
92
  oldProduct,
131
- targetRoute: route
93
+ targetRoute: to
132
94
  })
133
95
  ]);
134
96
 
135
- if (localCheckResource) {
136
- validateResource(store, route, redirect);
137
- }
97
+ validateResource(store, to);
138
98
 
139
99
  if (!clusterId) {
140
100
  clusterId = store.getters['defaultClusterId']; // This needs the cluster list, so no parallel
@@ -156,16 +116,17 @@ export default async function({
156
116
  });
157
117
  }
158
118
  }
119
+ next();
159
120
  } catch (e) {
160
- if ( e.name === ClusterNotFoundError.name ) {
161
- return redirect(302, '/home');
162
- } if ( e.name === RedirectToError.name ) {
163
- return redirect(302, e.url);
121
+ if ( e.name === ClusterNotFoundError.NAME ) {
122
+ return next('/home');
123
+ } if ( e.name === RedirectToError.NAME ) {
124
+ return next(e.url);
164
125
  } else {
165
126
  // Sets error 500 if lost connection to API
166
127
  store.commit('setError', { error: e, locationError: new Error(store.getters['i18n/t']('nav.failWhale.authMiddleware')) });
167
128
 
168
- return redirect(302, '/fail-whale');
129
+ return next('/fail-whale');
169
130
  }
170
131
  }
171
132
  }
@@ -0,0 +1,13 @@
1
+ export function install(router, context) {
2
+ router.beforeEach((to, from, next) => loadHistory(to, from, next, context));
3
+ }
4
+
5
+ export async function loadHistory(to, from, next) {
6
+ // Clear state used to record if back button was used for navigation
7
+ // TODO: Investigate if this can be removed. This is only used on the templates/error.vue page and seems hacky.
8
+ setTimeout(() => {
9
+ window._popStateDetected = false;
10
+ }, 1);
11
+
12
+ next();
13
+ }
@@ -1,5 +1,5 @@
1
1
  export function install(router, context) {
2
- router.beforeEach((to, from, next) => loadI18n(to, from, next, context));
2
+ router.beforeEach(async(to, from, next) => await loadI18n(to, from, next, context));
3
3
  }
4
4
 
5
5
  export async function loadI18n(to, from, next, { store }) {
@@ -1,7 +1,14 @@
1
1
  import { install as installLoadInitialSettings } from '@shell/config/router/navigation-guards/load-initial-settings';
2
2
  import { install as installAttemptFirstLogin } from '@shell/config/router/navigation-guards/attempt-first-login';
3
3
  import { install as installAuthentication } from '@shell/config/router/navigation-guards/authentication';
4
+ import { install as installRuntimeExtensionRoute } from '@shell/config/router/navigation-guards/runtime-extension-route';
4
5
  import { install as installI18N } from '@shell/config/router/navigation-guards/i18n';
6
+ import { install as installProducts } from '@shell/config/router/navigation-guards/products';
7
+ import { install as installHistory } from '@shell/config/router/navigation-guards/history';
8
+ import { install as installClusters } from '@shell/config/router/navigation-guards/clusters';
9
+ import { install as installHandleInstallRedirect } from '@shell/config/router/navigation-guards/install-redirect';
10
+ import { install as installPageTitle } from '@shell/config/router/navigation-guards/page-title';
11
+ import { install as installServerUpgradeGrowl } from '@shell/config/router/navigation-guards/server-upgrade-growl';
5
12
 
6
13
  /**
7
14
  * Install our router navigation guards. i.e. router.beforeEach(), router.afterEach()
@@ -10,7 +17,7 @@ export function installNavigationGuards(router, context) {
10
17
  // NOTE: the order of the installation matters.
11
18
  // Be intentional when adding, removing or modifying the guards that are installed.
12
19
 
13
- const navigationGuardInstallers = [installLoadInitialSettings, installAttemptFirstLogin, installAuthentication, installI18N];
20
+ const navigationGuardInstallers = [installLoadInitialSettings, installAttemptFirstLogin, installAuthentication, installProducts, installHistory, installClusters, installRuntimeExtensionRoute, installI18N, installHandleInstallRedirect, installPageTitle, installServerUpgradeGrowl];
14
21
 
15
22
  navigationGuardInstallers.forEach((installer) => installer(router, context));
16
23
  }
@@ -0,0 +1,95 @@
1
+ import { REPO_TYPE, REPO, CHART, VERSION } from '@shell/config/query-params';
2
+ import { routeRequiresInstallRedirect, findMeta } from '@shell/utils/router';
3
+
4
+ /**
5
+ * All of this is related to the original install-redirect middleware we used previously. Since removing
6
+ * middleware this is the closest analog since middleware used to run in beforeeach.
7
+ *
8
+ * I originally tried using mixins but the pages wouldn't render if the product didn't exist due to the way our templates/default.vue
9
+ * determines if a cluster is ready before rendering the child route.
10
+ *
11
+ * I personally think that we should remove this concept entirely but I'm leaving it in for completeness sake while getting through the vue3 migration.
12
+ */
13
+
14
+ export const INSTALL_REDIRECT_META_KEY = 'installRedirect';
15
+
16
+ export function install(router, context) {
17
+ router.beforeEach(async(to, from, next) => await handleInstallRedirect(to, from, next, context));
18
+ }
19
+
20
+ async function handleInstallRedirect(to, from, next, { store }) {
21
+ if (!routeRequiresInstallRedirect(to)) {
22
+ return next();
23
+ }
24
+
25
+ try {
26
+ const installRedirectArguments = findMeta(to, INSTALL_REDIRECT_META_KEY);
27
+
28
+ await installRedirect(store, next, installRedirectArguments);
29
+ } catch (e) {
30
+ console.error('Failed to use install-redirect', e); // eslint-disable-line no-console
31
+ }
32
+
33
+ next();
34
+ }
35
+
36
+ // Arguments here should be the same as the arguments from installRedirectImpl below
37
+ export function installRedirectRouteMeta(product, chartName, defaultResourceOrRoute, install = true) {
38
+ return { [INSTALL_REDIRECT_META_KEY]: [...arguments] };
39
+ }
40
+
41
+ async function installRedirect(store, redirect, args) {
42
+ await installRedirectImpl(...args);
43
+
44
+ async function installRedirectImpl(product, chartName, defaultResourceOrRoute, install = true) {
45
+ const cluster = store.getters['currentCluster']?.id || 'local';
46
+
47
+ if ( store.getters['type-map/isProductActive'](product) ) {
48
+ // If the product is installed and there's a default resource, redirect there
49
+
50
+ if ( defaultResourceOrRoute ) {
51
+ if ( typeof defaultResourceOrRoute === 'object' ) {
52
+ return redirect(defaultResourceOrRoute);
53
+ }
54
+
55
+ return redirect({
56
+ name: 'c-cluster-product-resource',
57
+ params: {
58
+ cluster,
59
+ product,
60
+ resource: defaultResourceOrRoute
61
+ },
62
+ });
63
+ }
64
+
65
+ // Otherwise just let the middleware pass through
66
+ } else if (install) {
67
+ // The product is not installed, redirect to the details chart
68
+
69
+ await store.dispatch('catalog/load');
70
+
71
+ const chart = store.getters['catalog/chart']({ chartName });
72
+
73
+ if ( chart ) {
74
+ return redirect({
75
+ name: 'c-cluster-apps-charts-chart',
76
+ params: { cluster },
77
+ query: {
78
+ [REPO_TYPE]: chart.repoType,
79
+ [REPO]: chart.repoName,
80
+ [CHART]: chart.chartName,
81
+ [VERSION]: chart.versions[0].version
82
+ },
83
+ });
84
+ } else {
85
+ // The chart's not available
86
+ store.dispatch('loadingError', `Chart not found for ${ product }`);
87
+ }
88
+ } else {
89
+ return redirect({
90
+ name: 'c-cluster-explorer',
91
+ params: { cluster },
92
+ });
93
+ }
94
+ }
95
+ }
@@ -1,7 +1,7 @@
1
1
  import { fetchInitialSettings } from '@shell/utils/settings';
2
2
 
3
3
  export function install(router, context) {
4
- router.beforeEach((to, from, next) => loadInitialSettings(to, from, next, context));
4
+ router.beforeEach(async(to, from, next) => await loadInitialSettings(to, from, next, context));
5
5
  }
6
6
 
7
7
  export async function loadInitialSettings(to, from, next, { store }) {
@@ -0,0 +1,12 @@
1
+ import { updatePageTitle } from '@shell/utils/title';
2
+ import { getVendor } from '@shell/config/private-label';
3
+
4
+ export function install(router) {
5
+ router.afterEach(updatePageTitleOnChange);
6
+ }
7
+
8
+ export async function updatePageTitleOnChange(to, from) {
9
+ if (from?.name !== to?.name) {
10
+ updatePageTitle(getVendor());
11
+ }
12
+ }
@@ -0,0 +1,15 @@
1
+ import { setProduct } from '@shell/utils/auth';
2
+ import { applyProducts } from '@shell/store/type-map';
3
+
4
+ export function install(router, context) {
5
+ router.beforeEach((to, from, next) => loadProducts(to, from, next, context));
6
+ }
7
+
8
+ export async function loadProducts(to, from, next, { store }) {
9
+ // GC should be notified of route change before any find/get request is made that might be used for that page
10
+ store.dispatch('gcRouteChanged', to);
11
+
12
+ await applyProducts(store, store.$plugin);
13
+ setProduct(store, to);
14
+ next();
15
+ }
@@ -0,0 +1,31 @@
1
+ import dynamicPluginLoader from '@shell/pkg/dynamic-plugin-loader';
2
+ import { routeRequiresAuthentication } from '@shell/utils/router';
3
+
4
+ export function install(router, context) {
5
+ router.beforeEach((to, from, next) => runtimeExtensionRoute(to, from, next, context));
6
+ }
7
+
8
+ export async function runtimeExtensionRoute(to, from, next, { store }) {
9
+ if (!routeRequiresAuthentication(to) || to.name !== '404') {
10
+ return next();
11
+ }
12
+
13
+ try {
14
+ // Handle the loading of dynamic plugins (Harvester) because we only want to attempt to load those plugins and routes if we first couldn't find a page.
15
+ // We should probably get rid of this concept entirely and just load plugins at the start.
16
+ await store.dispatch('loadManagement');
17
+ const newLocation = await dynamicPluginLoader.check({ route: { path: window.location.pathname }, store });
18
+
19
+ // If we have a new location, double check that it's actually valid
20
+ const resolvedRoute = newLocation?.path ? store.app.router.resolve({ path: newLocation.path.replace(/^\/{0,1}dashboard/, '') }) : null;
21
+
22
+ if (resolvedRoute?.route.matched.length) {
23
+ // Note - don't use `redirect` or `store.app.route` (breaks feature by failing to run middleware in default layout)
24
+ return next(resolvedRoute.resolved.path);
25
+ }
26
+ } catch (e) {
27
+ console.error('Failed to load harvester', e); // eslint-disable-line no-console
28
+ }
29
+
30
+ next();
31
+ }
@@ -0,0 +1,19 @@
1
+ import { UPGRADED, _FLAGGED, _UNFLAG } from '@shell/config/query-params';
2
+
3
+ export function install(router, context) {
4
+ router.afterEach((to, from) => renderServerUpgradeGrowl(to, from, { router, ...context }));
5
+ }
6
+
7
+ export async function renderServerUpgradeGrowl(to, from, { router, store }) {
8
+ const upgraded = to.query[UPGRADED] === _FLAGGED;
9
+
10
+ if ( upgraded ) {
11
+ router.applyQuery({ [UPGRADED]: _UNFLAG });
12
+
13
+ store.dispatch('growl/success', {
14
+ title: store.getters['i18n/t']('serverUpgrade.title'),
15
+ message: store.getters['i18n/t']('serverUpgrade.message'),
16
+ timeout: 0,
17
+ });
18
+ }
19
+ }
@@ -1,10 +1,21 @@
1
1
  import { NAME as APPS } from '@shell/config/product/apps';
2
2
  import { NAME as EXPLORER } from '@shell/config/product/explorer';
3
3
  import { NAME as MANAGER } from '@shell/config/product/manager';
4
- import { CAPI, MANAGEMENT } from '@shell/config/types';
4
+ import { CAPI, MANAGEMENT, BACKUP_RESTORE, CIS } from '@shell/config/types';
5
5
  import { NAME as MCAPPS, NAME as LEGACY } from '@shell/config/product/multi-cluster-apps';
6
6
  import { NAME as AUTH } from '@shell/config/product/auth';
7
7
 
8
+ // All these imports are related to the install-redirect.js navigation guard.
9
+ import { installRedirectRouteMeta } from 'config/router/navigation-guards/install-redirect';
10
+ import { NAME as BACKUP_NAME, CHART_NAME as BACKUP_CHART_NAME } from '@shell/config/product/backup';
11
+ import { NAME as CIS_NAME, CHART_NAME as CIS_CHART_NAME } from '@shell/config/product/cis';
12
+ import { NAME as GATEKEEPER_NAME, CHART_NAME as GATEKEEPER_CHART_NAME } from '@shell/config/product/gatekeeper';
13
+ import { NAME as ISTIO_NAME, CHART_NAME as ISTIO_CHART_NAME } from '@shell/config/product/istio';
14
+ import { NAME as LOGGING_NAME, CHART_NAME as LOGGING_CHART_NAME } from '@shell/config/product/logging';
15
+ import { NAME as MONITORING_NAME, CHART_NAME as MONITORING_CHART_NAME } from '@shell/config/product/monitoring';
16
+ import { NAME as NEUVECTOR_NAME, CHART_NAME as NEUVECTOR_CHART_NAME } from '@shell/config/product/neuvector';
17
+ import { NAME as LONGHORN_NAME, CHART_NAME as LONGHORN_CHART_NAME } from '@shell/config/product/longhorn';
18
+
8
19
  const interopDefault = (promise) => promise.then((page) => page.default || page);
9
20
 
10
21
  /**
@@ -14,11 +25,12 @@ const interopDefault = (promise) => promise.then((page) => page.default || page)
14
25
  export default [
15
26
  {
16
27
  path: '/',
17
- component: () => interopDefault(import('@shell/components/templates/default.vue')),
28
+ component: () => interopDefault(import('@shell/pages/index.vue')),
29
+ name: 'index',
18
30
  meta: { requiresAuthentication: true },
19
31
  children: [
20
32
  {
21
- path: '',
33
+ path: '/',
22
34
  component: () => interopDefault(import('@shell/pages/index.vue')),
23
35
  name: 'index'
24
36
  },
@@ -30,7 +42,7 @@ export default [
30
42
  name: 'fail-whale'
31
43
  },
32
44
  {
33
- path: '',
45
+ path: '/',
34
46
  component: () => interopDefault(import('@shell/components/templates/blank.vue')),
35
47
  name: 'blank',
36
48
  meta: { requiresAuthentication: true },
@@ -38,7 +50,7 @@ export default [
38
50
  ]
39
51
  },
40
52
  {
41
- path: '',
53
+ path: '/',
42
54
  component: () => interopDefault(import('@shell/components/templates/home.vue')),
43
55
  meta: { requiresAuthentication: true },
44
56
  children: [
@@ -55,7 +67,7 @@ export default [
55
67
  ]
56
68
  },
57
69
  {
58
- path: '',
70
+ path: '/',
59
71
  component: () => interopDefault(import('@shell/components/templates/plain.vue')),
60
72
  name: 'plain',
61
73
  meta: { requiresAuthentication: true },
@@ -118,14 +130,14 @@ export default [
118
130
  ]
119
131
  },
120
132
  {
121
- path: '',
133
+ path: '/',
122
134
  component: () => interopDefault(import('@shell/components/templates/standalone.vue')),
123
135
  name: 'standalone',
124
136
  children: [
125
137
  ]
126
138
  },
127
139
  {
128
- path: '',
140
+ path: '/',
129
141
  component: () => interopDefault(import('@shell/components/templates/unauthenticated.vue')),
130
142
  name: 'unauthenticated',
131
143
  children: [
@@ -151,7 +163,7 @@ export default [
151
163
  ]
152
164
  },
153
165
  {
154
- path: '',
166
+ path: '/',
155
167
  component: () => interopDefault(import('@shell/components/templates/default.vue')),
156
168
  name: 'default',
157
169
  meta: { requiresAuthentication: true },
@@ -192,25 +204,27 @@ export default [
192
204
  component: () => interopDefault(import('@shell/pages/c/_cluster/explorer/index.vue')),
193
205
  name: 'c-cluster-explorer'
194
206
  }, {
195
- path: '/c/:cluster/backup',
196
- component: () => interopDefault(import('@shell/pages/c/_cluster/backup/index.vue')),
197
- name: 'c-cluster-backup'
207
+ path: '/c/:cluster/backup',
208
+ name: 'c-cluster-backup',
209
+ meta: { ...installRedirectRouteMeta(BACKUP_NAME, BACKUP_CHART_NAME, BACKUP_RESTORE.BACKUP) }
198
210
  }, {
199
- path: '/c/:cluster/cis',
200
- component: () => interopDefault(import('@shell/pages/c/_cluster/cis/index.vue')),
201
- name: 'c-cluster-cis'
211
+ path: '/c/:cluster/cis',
212
+ name: 'c-cluster-cis',
213
+ meta: { ...installRedirectRouteMeta(CIS_NAME, CIS_CHART_NAME, CIS.CLUSTER_SCAN) }
202
214
  }, {
203
215
  path: '/c/:cluster/fleet',
204
216
  component: () => interopDefault(import('@shell/pages/c/_cluster/fleet/index.vue')),
205
- name: 'c-cluster-fleet'
217
+ name: 'c-cluster-fleet',
206
218
  }, {
207
219
  path: '/c/:cluster/gatekeeper',
208
220
  component: () => interopDefault(import('@shell/pages/c/_cluster/gatekeeper/index.vue')),
209
- name: 'c-cluster-gatekeeper'
221
+ name: 'c-cluster-gatekeeper',
222
+ meta: { ...installRedirectRouteMeta(GATEKEEPER_NAME, GATEKEEPER_CHART_NAME) }
210
223
  }, {
211
224
  path: '/c/:cluster/istio',
212
225
  component: () => interopDefault(import('@shell/pages/c/_cluster/istio/index.vue')),
213
- name: 'c-cluster-istio'
226
+ name: 'c-cluster-istio',
227
+ meta: { ...installRedirectRouteMeta(ISTIO_NAME, ISTIO_CHART_NAME) }
214
228
  }, {
215
229
  path: '/c/:cluster/legacy',
216
230
  redirect(to) {
@@ -228,11 +242,13 @@ export default [
228
242
  }, {
229
243
  path: '/c/:cluster/logging',
230
244
  component: () => interopDefault(import('@shell/pages/c/_cluster/logging/index.vue')),
231
- name: 'c-cluster-logging'
245
+ name: 'c-cluster-logging',
246
+ meta: { ...installRedirectRouteMeta(LOGGING_NAME, LOGGING_CHART_NAME) }
232
247
  }, {
233
248
  path: '/c/:cluster/longhorn',
234
249
  component: () => interopDefault(import('@shell/pages/c/_cluster/longhorn/index.vue')),
235
- name: 'c-cluster-longhorn'
250
+ name: 'c-cluster-longhorn',
251
+ meta: { ...installRedirectRouteMeta(LONGHORN_NAME, LONGHORN_CHART_NAME) }
236
252
  }, {
237
253
  path: '/c/:cluster/manager',
238
254
  redirect(to) {
@@ -262,7 +278,8 @@ export default [
262
278
  }, {
263
279
  path: '/c/:cluster/monitoring',
264
280
  component: () => interopDefault(import('@shell/pages/c/_cluster/monitoring/index.vue')),
265
- name: 'c-cluster-monitoring'
281
+ name: 'c-cluster-monitoring',
282
+ meta: { ...installRedirectRouteMeta(MONITORING_NAME, MONITORING_CHART_NAME) }
266
283
  }, {
267
284
 
268
285
  path: '/c/:cluster/manager/jwt.authentication',
@@ -272,7 +289,8 @@ export default [
272
289
 
273
290
  path: '/c/:cluster/neuvector',
274
291
  component: () => interopDefault(import('@shell/pages/c/_cluster/neuvector/index.vue')),
275
- name: 'c-cluster-neuvector'
292
+ name: 'c-cluster-neuvector',
293
+ meta: { ...installRedirectRouteMeta(NEUVECTOR_NAME, NEUVECTOR_CHART_NAME, undefined, false) }
276
294
  }, {
277
295
  path: '/c/:cluster/apps/charts',
278
296
  component: () => interopDefault(import('@shell/pages/c/_cluster/apps/charts/index.vue')),
@@ -484,4 +502,12 @@ export default [
484
502
  component: () => interopDefault(import('@shell/pages/c/_cluster/_product/_resource/_namespace/_id.vue')),
485
503
  name: 'c-cluster-product-resource-namespace-id'
486
504
  }]
487
- }];
505
+ },
506
+ {
507
+ path: '/:catchAll(.*)*',
508
+ name: '404',
509
+ component: () => interopDefault(import('@shell/pages/404.vue')),
510
+ meta: { requiresAuthentication: true },
511
+ },
512
+
513
+ ];
@@ -108,7 +108,7 @@ export const SETTING = {
108
108
  USER_LAST_LOGIN_DEFAULT: 'user-last-login-default',
109
109
  DISABLE_INACTIVE_USER_AFTER: 'disable-inactive-user-after',
110
110
  DELETE_INACTIVE_USER_AFTER: 'delete-inactive-user-after',
111
- };
111
+ } as const;
112
112
 
113
113
  // These are the settings that are allowed to be edited via the UI
114
114
  export const ALLOWED_SETTINGS: GlobalSetting = {
package/config/store.js CHANGED
@@ -1,7 +1,4 @@
1
- import Vue from 'vue';
2
- import Vuex from 'vuex';
3
-
4
- Vue.use(Vuex);
1
+ import { createStore } from 'vuex';
5
2
 
6
3
  const VUEX_PROPERTIES = ['state', 'getters', 'actions', 'mutations'];
7
4
 
@@ -77,7 +74,7 @@ let store = {};
77
74
 
78
75
  // extendStore
79
76
  export const extendStore = store instanceof Function ? store : () => {
80
- return new Vuex.Store(Object.assign({ strict: (process.env.NODE_ENV !== 'production') }, store));
77
+ return createStore(Object.assign({ strict: (process.env.NODE_ENV !== 'production') }, store));
81
78
  };
82
79
 
83
80
  function normalizeRoot(moduleData, filePath) {
package/config/types.js CHANGED
@@ -93,6 +93,24 @@ export const WORKLOAD_TYPES = {
93
93
  REPLICATION_CONTROLLER: 'replicationcontroller',
94
94
  };
95
95
 
96
+ export const WORKLOAD_TYPE_TO_KIND_MAPPING = {
97
+ // Each deployment creates a replicaset and the metrics are published for a replicaset.
98
+ [WORKLOAD_TYPES.DEPLOYMENT]: 'ReplicaSet',
99
+ [WORKLOAD_TYPES.CRON_JOB]: 'CronJob',
100
+ [WORKLOAD_TYPES.DAEMON_SET]: 'DaemonSet',
101
+ [WORKLOAD_TYPES.JOB]: 'Job',
102
+ [WORKLOAD_TYPES.STATEFUL_SET]: 'StatefulSet',
103
+ [WORKLOAD_TYPES.REPLICA_SET]: 'ReplicaSet',
104
+ [WORKLOAD_TYPES.REPLICATION_CONTROLLER]: 'ReplicationController',
105
+ };
106
+
107
+ export const METRICS_SUPPORTED_KINDS = [
108
+ WORKLOAD_TYPES.DAEMON_SET,
109
+ WORKLOAD_TYPES.REPLICA_SET,
110
+ WORKLOAD_TYPES.STATEFUL_SET,
111
+ WORKLOAD_TYPES.DEPLOYMENT
112
+ ];
113
+
96
114
  const {
97
115
  DAEMON_SET, CRON_JOB, JOB, ...scalableWorkloads
98
116
  } = WORKLOAD_TYPES;
@@ -183,7 +183,7 @@ export function isChartVersionAvailableForInstall(versionsData, returnObj = fals
183
183
 
184
184
  const parsedRancherVersion = rancherVersion.split('-')?.[0];
185
185
  const regexHashString = new RegExp('^[A-Za-z0-9]{9}$');
186
- const isRancherVersionHashString = regexHashString.test(rancherVersion);
186
+ const isRancherVersionHashStringOrHead = regexHashString.test(rancherVersion) || rancherVersion.includes('head');
187
187
  const requiredUiVersion = version.annotations?.[UI_PLUGIN_CHART_ANNOTATIONS.UI_VERSION];
188
188
  const requiredKubeVersion = version.annotations?.[UI_PLUGIN_CHART_ANNOTATIONS.KUBE_VERSION];
189
189
  const versionObj = { ...version };
@@ -192,7 +192,7 @@ export function isChartVersionAvailableForInstall(versionsData, returnObj = fals
192
192
  versionObj.isCompatibleWithKubeVersion = true;
193
193
 
194
194
  // if it's a head version of Rancher, then we skip the validation and enable them all
195
- if (!isRancherVersionHashString && requiredUiVersion && !semver.satisfies(parsedRancherVersion, requiredUiVersion)) {
195
+ if (!isRancherVersionHashStringOrHead && requiredUiVersion && !semver.satisfies(parsedRancherVersion, requiredUiVersion)) {
196
196
  if (!returnObj) {
197
197
  return false;
198
198
  }