dashboard-shell-shell 3.0.2-rc.105 → 3.0.5-test.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 (630) hide show
  1. package/assets/data/aws-regions.json +3 -0
  2. package/assets/icons/demo.css:Zone.Identifier +0 -0
  3. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  4. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  5. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  6. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  7. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  9. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  10. package/assets/images/icons/document.svg +3 -0
  11. package/assets/images/key.svg +17 -0
  12. package/assets/images/providers/sks.svg +1 -0
  13. package/assets/images/vendor/cognito.svg +1 -0
  14. package/assets/styles/app.scss +3 -0
  15. package/assets/styles/base/_basic.scss +10 -0
  16. package/assets/styles/base/_spacing.scss +29 -0
  17. package/assets/styles/base/_variables.scss +16 -10
  18. package/assets/styles/global/_labeled-input.scss +1 -1
  19. package/assets/styles/global/_layout.scss +1 -1
  20. package/assets/styles/themes/_dark.scss +30 -0
  21. package/assets/styles/themes/_light.scss +80 -2
  22. package/assets/translations/en-us.yaml +822 -105
  23. package/assets/translations/zh-hans.yaml +13 -3
  24. package/chart/__tests__/S3.test.ts +2 -1
  25. package/chart/monitoring/index.vue +1 -1
  26. package/cloud-credential/gcp.vue +9 -1
  27. package/components/ActionMenuShell.vue +3 -7
  28. package/components/AppModal.vue +9 -28
  29. package/components/AsyncButton.vue +2 -0
  30. package/components/BrandImage.vue +0 -21
  31. package/components/Certificates.vue +5 -0
  32. package/components/CodeMirror.vue +3 -3
  33. package/components/CommunityLinks.vue +3 -58
  34. package/components/ConfigMapSettings/Settings.vue +377 -0
  35. package/components/ConfigMapSettings/index.vue +354 -0
  36. package/components/CruResource.vue +103 -16
  37. package/components/DetailText.vue +61 -11
  38. package/components/Drawer/Chrome.vue +115 -0
  39. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  40. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  41. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  42. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  43. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
  44. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  45. package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
  46. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  47. package/components/Drawer/ResourceDetailDrawer/index.vue +123 -0
  48. package/components/ExplorerProjectsNamespaces.vue +46 -29
  49. package/components/FilterPanel.vue +156 -0
  50. package/components/FixedBanner.vue +19 -5
  51. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  52. package/components/GrowlManager.vue +16 -15
  53. package/components/IconOrSvg.vue +19 -35
  54. package/components/KeyValueView.vue +1 -1
  55. package/components/LandingPagePreference.vue +2 -0
  56. package/components/Loading.vue +1 -1
  57. package/components/LocaleSelector.vue +10 -2
  58. package/components/PaginatedResourceTable.vue +53 -1
  59. package/components/ProgressBarMulti.vue +1 -0
  60. package/components/PromptModal.vue +38 -7
  61. package/components/PromptRemove.vue +5 -1
  62. package/components/PromptRestore.vue +22 -44
  63. package/components/RelatedResources.vue +4 -12
  64. package/components/Resource/Detail/Additional.vue +46 -0
  65. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  66. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  67. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  68. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  69. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  70. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  71. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  72. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  73. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  74. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  75. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  76. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  77. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  78. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  79. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  80. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  81. package/components/Resource/Detail/Card/index.vue +56 -0
  82. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  83. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  84. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  85. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  86. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  87. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
  88. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
  89. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +140 -0
  90. package/components/Resource/Detail/Metadata/KeyValue.vue +140 -0
  91. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  92. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  93. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  94. package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
  95. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  96. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  97. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  98. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  99. package/components/Resource/Detail/Metadata/composables.ts +81 -0
  100. package/components/Resource/Detail/Metadata/index.vue +88 -0
  101. package/components/Resource/Detail/Page.vue +37 -0
  102. package/components/Resource/Detail/PercentageBar.vue +40 -0
  103. package/components/Resource/Detail/ResourceRow.vue +138 -0
  104. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  105. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  106. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  107. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  108. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  109. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  110. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  111. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  112. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  113. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  114. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  115. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  116. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  117. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  118. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  119. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  120. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  121. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  122. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  123. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  124. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  125. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  126. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  127. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  128. package/components/Resource/Detail/SpacedRow.vue +14 -0
  129. package/components/Resource/Detail/StatusBar.vue +59 -0
  130. package/components/Resource/Detail/StatusRow.vue +61 -0
  131. package/components/Resource/Detail/TitleBar/Title.vue +14 -0
  132. package/components/Resource/Detail/TitleBar/Top.vue +14 -0
  133. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  134. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  135. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  136. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  137. package/components/Resource/Detail/TitleBar/composables.ts +46 -0
  138. package/components/Resource/Detail/TitleBar/index.vue +204 -0
  139. package/components/Resource/Detail/Top/index.vue +34 -0
  140. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  141. package/components/Resource/Detail/composables.ts +45 -0
  142. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  143. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  144. package/components/ResourceDetail/Masthead/index.vue +65 -0
  145. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  146. package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +0 -1
  147. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  148. package/components/ResourceDetail/index.vue +75 -575
  149. package/components/ResourceDetail/legacy.vue +564 -0
  150. package/components/ResourceList/Masthead.vue +49 -8
  151. package/components/ResourceList/index.vue +3 -2
  152. package/components/ResourceTable.vue +59 -85
  153. package/components/ResourceYaml.vue +15 -2
  154. package/components/RichTranslation.vue +106 -0
  155. package/components/SlideInPanelManager.vue +116 -14
  156. package/components/SortableTable/index.vue +14 -5
  157. package/components/SortableTable/paging.js +15 -16
  158. package/components/SortableTable/selection.js +22 -10
  159. package/components/StateDot/index.vue +28 -0
  160. package/components/StatusBadge.vue +6 -4
  161. package/components/SubtleLink.vue +25 -0
  162. package/components/Tabbed/Tab.vue +1 -1
  163. package/components/Tabbed/index.vue +61 -64
  164. package/components/Wizard.vue +16 -3
  165. package/components/YamlEditor.vue +1 -2
  166. package/components/__tests__/AsyncButton.test.ts +39 -0
  167. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  168. package/components/__tests__/CruResource.test.ts +63 -0
  169. package/components/__tests__/FilterPanel.test.ts +81 -0
  170. package/components/__tests__/GrowlManager.test.ts +0 -25
  171. package/components/__tests__/PromptModal.test.ts +146 -0
  172. package/components/__tests__/PromptRestore.test.ts +1 -65
  173. package/components/__tests__/RichTranslation.test.ts +115 -0
  174. package/components/auth/AuthBanner.vue +15 -14
  175. package/components/auth/Principal.vue +0 -1
  176. package/components/auth/RoleDetailEdit.vue +44 -4
  177. package/components/auth/login/ldap.vue +2 -2
  178. package/components/auth/login/oidc.vue +6 -1
  179. package/components/fleet/FleetApplications.vue +174 -0
  180. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  181. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  182. package/components/fleet/FleetClusters.vue +25 -6
  183. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  184. package/components/fleet/FleetHelmOps.vue +123 -0
  185. package/components/fleet/FleetIntro.vue +58 -28
  186. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  187. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  188. package/components/fleet/FleetRepos.vue +37 -80
  189. package/components/fleet/FleetResources.vue +69 -27
  190. package/components/fleet/FleetSummary.vue +26 -51
  191. package/components/fleet/FleetValuesFrom.vue +295 -0
  192. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  193. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  194. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  195. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  196. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  197. package/components/fleet/dashboard/Empty.vue +73 -0
  198. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  199. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  200. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  201. package/components/fleet/dashboard/ResourcePanel.vue +384 -0
  202. package/components/form/ArrayList.vue +144 -116
  203. package/components/form/BannerSettings.vue +117 -50
  204. package/components/form/ChangePassword.vue +3 -1
  205. package/components/form/ColorInput.vue +35 -6
  206. package/components/form/FileImageSelector.vue +1 -1
  207. package/components/form/Footer.vue +10 -4
  208. package/components/form/KeyValue.vue +94 -66
  209. package/components/form/LabeledSelect.vue +72 -54
  210. package/components/form/Labels.vue +91 -21
  211. package/components/form/MatchExpressions.vue +58 -11
  212. package/components/form/NameNsDescription.vue +8 -4
  213. package/components/form/Networking.vue +24 -19
  214. package/components/form/NotificationSettings.vue +15 -1
  215. package/components/form/ResourceLabeledSelect.vue +22 -8
  216. package/components/form/ResourceSelector.vue +27 -23
  217. package/components/form/ResourceTabs/index.vue +7 -1
  218. package/components/form/SSHKnownHosts/index.vue +14 -11
  219. package/components/form/SecretSelector.vue +18 -2
  220. package/components/form/Select.vue +57 -26
  221. package/components/form/SelectOrCreateAuthSecret.vue +6 -3
  222. package/components/form/SimpleSecretSelector.vue +17 -4
  223. package/components/form/Taints.vue +21 -2
  224. package/components/form/UnitInput.vue +21 -0
  225. package/components/form/ValueFromResource.vue +31 -19
  226. package/components/form/__tests__/ArrayList.test.ts +32 -0
  227. package/components/form/__tests__/ColorInput.test.ts +35 -0
  228. package/components/form/__tests__/KeyValue.test.ts +36 -0
  229. package/components/form/__tests__/LabeledSelect.test.ts +79 -2
  230. package/components/form/__tests__/Labels.test.ts +360 -0
  231. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  232. package/components/form/__tests__/Networking.test.ts +116 -0
  233. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
  234. package/components/form/__tests__/Select.test.ts +37 -1
  235. package/components/form/__tests__/UnitInput.test.ts +23 -1
  236. package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
  237. package/components/formatter/ClusterLink.vue +5 -8
  238. package/components/formatter/Description.vue +30 -0
  239. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  240. package/components/formatter/FleetApplicationSource.vue +79 -0
  241. package/components/formatter/FleetSummaryGraph.vue +7 -0
  242. package/components/formatter/PodImages.vue +1 -1
  243. package/components/formatter/WorkloadHealthScale.vue +1 -1
  244. package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
  245. package/components/formatter/__tests__/LiveDate.test.ts +10 -2
  246. package/components/google/AccountAccess.vue +209 -0
  247. package/components/google/types/gcp.d.ts +136 -0
  248. package/components/google/types/index.d.ts +101 -0
  249. package/components/google/util/__mocks__/gcp.ts +465 -0
  250. package/components/google/util/formatter.ts +82 -0
  251. package/components/google/util/gcp.ts +134 -0
  252. package/components/google/util/index.d.ts +11 -0
  253. package/components/nav/Favorite.vue +1 -1
  254. package/components/nav/Group.vue +5 -0
  255. package/components/nav/Header.vue +24 -38
  256. package/components/nav/NamespaceFilter.vue +142 -85
  257. package/components/nav/NotificationCenter/Notification.vue +484 -0
  258. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  259. package/components/nav/NotificationCenter/index.vue +148 -0
  260. package/components/nav/TopLevelMenu.helper.ts +55 -34
  261. package/components/nav/TopLevelMenu.vue +11 -0
  262. package/components/nav/Type.vue +4 -1
  263. package/components/nav/WindowManager/ContainerLogs.vue +87 -61
  264. package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
  265. package/components/nav/WindowManager/index.vue +3 -2
  266. package/components/templates/default.vue +0 -3
  267. package/components/templates/plain.vue +0 -3
  268. package/composables/drawer.ts +26 -0
  269. package/composables/focusTrap.ts +3 -3
  270. package/composables/resources.test.ts +63 -0
  271. package/composables/resources.ts +38 -0
  272. package/composables/useI18n.ts +12 -11
  273. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  274. package/config/labels-annotations.js +22 -11
  275. package/config/pagination-table-headers.js +8 -1
  276. package/config/private-label.js +0 -1
  277. package/config/product/auth.js +20 -3
  278. package/config/product/{cis.js → compliance.js} +23 -26
  279. package/config/product/explorer.js +49 -17
  280. package/config/product/fleet.js +77 -17
  281. package/config/product/manager.js +1 -29
  282. package/config/product/settings.js +23 -11
  283. package/config/query-params.js +16 -1
  284. package/config/roles.ts +2 -1
  285. package/config/router/navigation-guards/authentication.js +51 -2
  286. package/config/router/navigation-guards/index.js +5 -59
  287. package/config/router/routes.js +65 -31
  288. package/config/secret.ts +15 -0
  289. package/config/settings.ts +33 -16
  290. package/config/store.js +2 -0
  291. package/config/system-namespaces.js +1 -1
  292. package/config/table-headers.js +92 -31
  293. package/config/types.js +18 -7
  294. package/config/version.js +1 -1
  295. package/core/plugin-helpers.ts +3 -2
  296. package/core/plugin.ts +32 -7
  297. package/core/types.ts +25 -7
  298. package/detail/catalog.cattle.io.app.vue +5 -1
  299. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  300. package/detail/fleet.cattle.io.bundle.vue +70 -6
  301. package/detail/fleet.cattle.io.cluster.vue +28 -15
  302. package/detail/fleet.cattle.io.gitrepo.vue +11 -2
  303. package/detail/fleet.cattle.io.helmop.vue +157 -0
  304. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  305. package/detail/management.cattle.io.oidcclient.vue +369 -0
  306. package/detail/namespace.vue +0 -3
  307. package/detail/node.vue +20 -16
  308. package/detail/pod.vue +2 -2
  309. package/detail/provisioning.cattle.io.cluster.vue +16 -50
  310. package/detail/service.vue +10 -2
  311. package/detail/workload/index.vue +48 -39
  312. package/dialog/AddCustomBadgeDialog.vue +0 -1
  313. package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
  314. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  315. package/dialog/AssignToDialog.vue +176 -0
  316. package/dialog/ChangePasswordDialog.vue +106 -0
  317. package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
  318. package/dialog/DisableAuthProviderDialog.vue +101 -0
  319. package/dialog/DrainNode.vue +1 -1
  320. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
  321. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
  322. package/dialog/FeatureFlagListDialog.vue +288 -0
  323. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  324. package/dialog/GenericPrompt.vue +1 -1
  325. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  326. package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
  327. package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
  328. package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
  329. package/dialog/MoveNamespaceDialog.vue +157 -0
  330. package/dialog/OidcClientSecretDialog.vue +117 -0
  331. package/dialog/RedeployWorkloadDialog.vue +164 -0
  332. package/dialog/RotateEncryptionKeyDialog.vue +10 -30
  333. package/dialog/ScalePoolDownDialog.vue +1 -1
  334. package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
  335. package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
  336. package/dialog/WechatDialog.vue +57 -0
  337. package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
  338. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  339. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  340. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  341. package/edit/__tests__/service.test.ts +2 -1
  342. package/edit/auth/ldap/__tests__/config.test.ts +14 -0
  343. package/edit/auth/ldap/config.vue +24 -0
  344. package/edit/auth/oidc.vue +159 -93
  345. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  346. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  347. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  348. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  349. package/edit/configmap.vue +8 -2
  350. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  351. package/edit/fleet.cattle.io.gitrepo.vue +70 -256
  352. package/edit/fleet.cattle.io.helmop.vue +786 -0
  353. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  354. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  355. package/edit/logging-flow/index.vue +1 -0
  356. package/edit/logging.banzaicloud.io.output/index.vue +2 -1
  357. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +5 -6
  358. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  359. package/edit/management.cattle.io.oidcclient.vue +162 -0
  360. package/edit/management.cattle.io.project.vue +4 -1
  361. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  362. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  363. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  364. package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
  365. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  366. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  367. package/edit/monitoring.coreos.com.route.vue +1 -0
  368. package/edit/namespace.vue +2 -4
  369. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  370. package/edit/networking.k8s.io.ingress/Certificate.vue +11 -3
  371. package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
  372. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  373. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -14
  374. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +57 -62
  375. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
  376. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
  377. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
  378. package/edit/networking.k8s.io.networkpolicy/index.vue +23 -31
  379. package/edit/node.vue +1 -0
  380. package/edit/persistentvolume/index.vue +4 -1
  381. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
  382. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
  383. package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
  384. package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
  385. package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
  386. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +48 -39
  387. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
  388. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  389. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
  390. package/edit/resources.cattle.io.restore.vue +1 -1
  391. package/edit/secret/basic.vue +1 -0
  392. package/edit/secret/index.vue +127 -15
  393. package/edit/service.vue +17 -29
  394. package/edit/serviceaccount.vue +4 -1
  395. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  396. package/edit/workload/index.vue +11 -15
  397. package/edit/workload/mixins/workload.js +0 -2
  398. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  399. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  400. package/list/fleet.cattle.io.helmop.vue +108 -0
  401. package/list/harvesterhci.io.management.cluster.vue +0 -17
  402. package/list/management.cattle.io.feature.vue +4 -288
  403. package/list/management.cattle.io.oidcclient.vue +108 -0
  404. package/list/management.cattle.io.user.vue +13 -20
  405. package/list/namespace.vue +6 -2
  406. package/list/node.vue +2 -0
  407. package/list/projectsecret.vue +345 -0
  408. package/list/secret.vue +109 -0
  409. package/list/workload.vue +6 -2
  410. package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
  411. package/machine-config/amazonec2.vue +3 -24
  412. package/machine-config/components/GCEImage.vue +374 -0
  413. package/machine-config/google.vue +617 -0
  414. package/machine-config/vmwarevsphere.vue +7 -17
  415. package/mixins/__tests__/brand.spec.ts +170 -0
  416. package/mixins/auth-config.js +8 -1
  417. package/mixins/brand.js +16 -17
  418. package/mixins/create-edit-view/impl.js +10 -1
  419. package/mixins/create-edit-view/index.js +5 -0
  420. package/mixins/preset.js +100 -0
  421. package/mixins/resource-fetch-api-pagination.js +73 -44
  422. package/mixins/resource-fetch.js +18 -8
  423. package/mixins/resource-table-watch.js +45 -0
  424. package/mixins/vue-select-overrides.js +1 -4
  425. package/models/__tests__/chart.test.ts +296 -0
  426. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  427. package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  428. package/models/__tests__/node.test.ts +7 -63
  429. package/models/__tests__/workload.test.ts +1 -0
  430. package/models/chart.js +157 -2
  431. package/models/cluster/node.js +2 -1
  432. package/models/cluster.js +32 -2
  433. package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
  434. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  435. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  436. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  437. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  438. package/models/fleet-application.js +297 -0
  439. package/models/fleet.cattle.io.bundle.js +9 -8
  440. package/models/fleet.cattle.io.cluster.js +21 -4
  441. package/models/fleet.cattle.io.gitrepo.js +46 -382
  442. package/models/fleet.cattle.io.helmop.js +202 -0
  443. package/models/management.cattle.io.authconfig.js +1 -0
  444. package/models/management.cattle.io.cluster.js +0 -20
  445. package/models/management.cattle.io.feature.js +7 -1
  446. package/models/management.cattle.io.fleetworkspace.js +14 -1
  447. package/models/management.cattle.io.node.js +7 -22
  448. package/models/management.cattle.io.nodepool.js +12 -0
  449. package/models/management.cattle.io.oidcclient.js +18 -0
  450. package/models/management.cattle.io.registration.js +3 -0
  451. package/models/management.cattle.io.setting.js +0 -1
  452. package/models/namespace.js +12 -1
  453. package/models/provisioning.cattle.io.cluster.js +60 -97
  454. package/models/secret.js +157 -2
  455. package/models/service.js +28 -9
  456. package/models/storage.k8s.io.storageclass.js +2 -2
  457. package/models/workload.js +91 -51
  458. package/package.json +6 -5
  459. package/pages/about.vue +17 -61
  460. package/pages/account/index.vue +9 -1
  461. package/pages/auth/login.vue +3 -38
  462. package/pages/auth/verify.vue +13 -1
  463. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  464. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  465. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
  466. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  467. package/pages/c/_cluster/apps/charts/index.vue +501 -468
  468. package/pages/c/_cluster/apps/charts/install.vue +0 -1
  469. package/pages/c/_cluster/auth/roles/index.vue +19 -48
  470. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  471. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  472. package/pages/c/_cluster/explorer/index.vue +14 -3
  473. package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
  474. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  475. package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
  476. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  477. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  478. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  479. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  480. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  481. package/pages/c/_cluster/fleet/index.vue +866 -328
  482. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  483. package/pages/c/_cluster/longhorn/index.vue +5 -2
  484. package/pages/c/_cluster/settings/banners.vue +56 -2
  485. package/pages/c/_cluster/settings/brand.vue +2 -1
  486. package/pages/c/_cluster/settings/performance.vue +7 -26
  487. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  488. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  489. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
  490. package/pages/c/_cluster/uiplugins/index.vue +98 -55
  491. package/pages/explorer/resource/detail/configmap.vue +42 -0
  492. package/pages/explorer/resource/detail/projectsecret.vue +9 -0
  493. package/pages/explorer/resource/detail/secret.vue +63 -0
  494. package/pages/home.vue +8 -104
  495. package/pages/prefs.vue +0 -1
  496. package/pages/support/index.vue +4 -6
  497. package/plugins/clean-html.js +2 -0
  498. package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
  499. package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
  500. package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
  501. package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
  502. package/plugins/dashboard-store/actions.js +212 -55
  503. package/plugins/dashboard-store/getters.js +112 -24
  504. package/plugins/dashboard-store/mutations.js +61 -12
  505. package/plugins/dashboard-store/normalize.js +29 -19
  506. package/plugins/dashboard-store/resource-class.js +132 -49
  507. package/plugins/steve/__tests__/getters.test.ts +19 -12
  508. package/plugins/steve/__tests__/steve-class.test.ts +1 -0
  509. package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
  510. package/plugins/steve/actions.js +37 -24
  511. package/plugins/steve/getters.js +47 -12
  512. package/plugins/steve/resourceWatcher.js +10 -3
  513. package/plugins/steve/steve-class.js +5 -0
  514. package/plugins/steve/steve-pagination-utils.ts +225 -43
  515. package/plugins/steve/subscribe.js +418 -53
  516. package/plugins/steve/worker/web-worker.advanced.js +5 -1
  517. package/rancher-components/Banner/Banner.test.ts +51 -3
  518. package/rancher-components/Banner/Banner.vue +37 -6
  519. package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
  520. package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
  521. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
  522. package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
  523. package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
  524. package/rancher-components/Form/Radio/RadioButton.vue +21 -5
  525. package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
  526. package/rancher-components/Form/Radio/RadioGroup.vue +81 -38
  527. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
  528. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
  529. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  530. package/rancher-components/RcButton/RcButton.vue +1 -1
  531. package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
  532. package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
  533. package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
  534. package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
  535. package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
  536. package/rancher-components/RcDropdown/RcDropdownMenu.vue +7 -8
  537. package/rancher-components/RcDropdown/index.ts +2 -0
  538. package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
  539. package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
  540. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  541. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  542. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  543. package/rancher-components/RcItemCard/index.ts +2 -0
  544. package/rancher-components/StringList/StringList.vue +1 -1
  545. package/scripts/extension/publish +1 -1
  546. package/static/loading-indicator.html +1 -1
  547. package/store/action-menu.js +26 -56
  548. package/store/auth.js +3 -0
  549. package/store/catalog.js +85 -25
  550. package/store/features.js +0 -1
  551. package/store/growl.js +97 -8
  552. package/store/i18n.js +1 -1
  553. package/store/index.js +44 -14
  554. package/store/notifications.ts +426 -0
  555. package/store/prefs.js +2 -8
  556. package/store/slideInPanel.ts +6 -0
  557. package/store/type-map.js +35 -19
  558. package/store/type-map.utils.ts +49 -6
  559. package/store/uiplugins.ts +15 -1
  560. package/types/fleet.d.ts +60 -1
  561. package/types/kube/kube-api.ts +34 -0
  562. package/types/notifications/index.ts +74 -0
  563. package/types/resources/fleet.d.ts +43 -0
  564. package/types/resources/pod-security-admission.ts +36 -0
  565. package/types/resources/settings.d.ts +107 -0
  566. package/types/resources/userPreferences.d.ts +13 -0
  567. package/types/shell/index.d.ts +971 -745
  568. package/types/store/dashboard-store.types.ts +57 -4
  569. package/types/store/pagination.types.ts +41 -9
  570. package/types/store/subscribe.types.ts +50 -0
  571. package/utils/__mocks__/tabbable.js +13 -0
  572. package/utils/__tests__/back-off.test.ts +354 -0
  573. package/utils/__tests__/create-yaml.test.ts +235 -0
  574. package/utils/__tests__/fleet.test.ts +148 -0
  575. package/utils/__tests__/kontainer.test.ts +19 -0
  576. package/utils/__tests__/object.test.ts +54 -1
  577. package/utils/__tests__/string.test.ts +273 -1
  578. package/utils/__tests__/time.test.ts +31 -0
  579. package/utils/auth.js +41 -6
  580. package/utils/back-off.ts +176 -0
  581. package/utils/cluster.js +24 -20
  582. package/utils/create-yaml.js +103 -9
  583. package/utils/crypto/encryption.ts +103 -0
  584. package/utils/cspAdaptor.ts +51 -0
  585. package/utils/error.js +4 -5
  586. package/utils/fleet-types.ts +0 -0
  587. package/utils/fleet.ts +204 -74
  588. package/utils/grafana.js +1 -0
  589. package/utils/kontainer.ts +3 -5
  590. package/utils/object.js +36 -12
  591. package/utils/pagination-utils.ts +50 -3
  592. package/utils/pagination-wrapper.ts +132 -50
  593. package/utils/perf-setting.utils.ts +28 -0
  594. package/utils/release-notes.ts +48 -0
  595. package/utils/router.js +4 -4
  596. package/utils/selector-typed.ts +210 -0
  597. package/utils/selector.js +29 -6
  598. package/utils/settings.ts +4 -1
  599. package/utils/string.js +24 -0
  600. package/utils/style.ts +39 -0
  601. package/utils/{time.js → time.ts} +25 -6
  602. package/utils/uiplugins.ts +41 -8
  603. package/utils/v-sphere.ts +5 -1
  604. package/utils/validators/formRules/__tests__/index.test.ts +76 -6
  605. package/utils/validators/formRules/index.ts +99 -4
  606. package/utils/window.js +11 -7
  607. package/.DS_Store +0 -0
  608. package/components/AssignTo.vue +0 -199
  609. package/components/DisableAuthProviderModal.vue +0 -115
  610. package/components/MoveModal.vue +0 -167
  611. package/components/PromptChangePassword.vue +0 -123
  612. package/components/ResourceList/Masthead-btn.vue +0 -225
  613. package/components/__tests__/ApplicationCard.test.ts +0 -27
  614. package/components/cards/ApplicationCard.vue +0 -145
  615. package/components/fleet/FleetBundleResources.vue +0 -86
  616. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  617. package/components/formatter/RKETemplateName.vue +0 -37
  618. package/config/product/legacy.js +0 -62
  619. package/config/secret.js +0 -14
  620. package/dialog/SaveAsRKETemplateDialog.vue +0 -139
  621. package/models/etcdbackup.js +0 -45
  622. package/pages/auth copy/login.vue +0 -595
  623. package/pages/auth copy/logout.vue +0 -47
  624. package/pages/auth copy/setup.vue +0 -523
  625. package/pages/auth copy/verify.vue +0 -203
  626. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  627. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  628. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  629. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  630. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
@@ -3,7 +3,6 @@ import difference from 'lodash/difference';
3
3
  import { mapGetters } from 'vuex';
4
4
  import CreateEditView from '@shell/mixins/create-edit-view';
5
5
  import FormValidation from '@shell/mixins/form-validation';
6
-
7
6
  import { set, get } from '@shell/utils/object';
8
7
  import { Banner } from '@components/Banner';
9
8
  import { Checkbox } from '@components/Form/Checkbox';
@@ -11,12 +10,11 @@ import LabeledSelect from '@shell/components/form/LabeledSelect';
11
10
  import YamlEditor from '@shell/components/YamlEditor';
12
11
  import { LEGACY } from '@shell/store/features';
13
12
  import semver from 'semver';
14
- import { _CREATE, _EDIT } from '@shell/config/query-params';
15
13
 
16
14
  const HARVESTER = 'harvester';
17
15
 
18
16
  export default {
19
- emits: ['enabled-system-services-changed', 'cilium-values-changed', 'kubernetes-changed', 'show-deprecated-patch-versions-changed', 'cis-changed', 'psa-default-changed'],
17
+ emits: ['enabled-system-services-changed', 'cilium-values-changed', 'kubernetes-changed', 'show-deprecated-patch-versions-changed', 'compliance-changed', 'psa-default-changed'],
20
18
 
21
19
  components: {
22
20
  Banner,
@@ -53,7 +51,7 @@ export default {
53
51
  type: Object,
54
52
  required: true
55
53
  },
56
- cisOverride: {
54
+ complianceOverride: {
57
55
  type: Boolean,
58
56
  required: true
59
57
  },
@@ -119,12 +117,23 @@ export default {
119
117
  }
120
118
  },
121
119
 
120
+ data() {
121
+ return {
122
+ showEnablingComplianceWarning: false,
123
+ initialAgentProfile: this.value.agentConfig?.profile || ''
124
+ };
125
+ },
126
+
122
127
  watch: {
123
128
  selectedVersion(neu, old) {
124
129
  if (neu?.value !== old?.value && this.ciliumIpv6) {
125
130
  // Re-assign so that the setter updates the structure for the new k8s version if needed
126
131
  this.ciliumIpv6 = !!this.ciliumIpv6;
127
132
  }
133
+ },
134
+
135
+ 'agentConfig.profile'(newValue) {
136
+ this.showEnablingComplianceWarning = this.provider === 'custom' && this.isEdit && !!newValue && newValue !== this.initialAgentProfile;
128
137
  }
129
138
  },
130
139
 
@@ -157,7 +166,7 @@ export default {
157
166
  });
158
167
 
159
168
  out.unshift({
160
- label: this.$store.getters['i18n/t']('cluster.rke2.cisProfile.option'),
169
+ label: this.$store.getters['i18n/t']('cluster.rke2.complianceProfile.option'),
161
170
  value: ''
162
171
  });
163
172
 
@@ -167,19 +176,19 @@ export default {
167
176
  /**
168
177
  * Allow to display override if PSA is needed and profile is set
169
178
  */
170
- hasCisOverride() {
179
+ hasComplianceOverride() {
171
180
  return (this.serverConfig?.profile || this.agentConfig?.profile) &&
172
181
  // Also check other cases on when to display the override
173
- this.showCisProfile && this.isCisSupported;
182
+ this.showComplianceProfile && this.isComplianceSupported;
174
183
  },
175
184
 
176
185
  /**
177
- * Disable PSA if CIS hardening is enabled, except override
186
+ * Disable PSA if Compliance hardening is enabled, except override
178
187
  */
179
188
  isPsaDisabled() {
180
- const cisValue = this.agentConfig?.profile || this.serverConfig?.profile;
189
+ const complianceValue = this.agentConfig?.profile || this.serverConfig?.profile;
181
190
 
182
- return !(!cisValue || this.cisOverride) && this.isCisSupported;
191
+ return !(!complianceValue || this.complianceOverride) && this.isComplianceSupported;
183
192
  },
184
193
 
185
194
  /**
@@ -218,12 +227,12 @@ export default {
218
227
  },
219
228
 
220
229
  /**
221
- * Check if current CIS profile is required and listed in the options
230
+ * Check if current compliance profile is required and listed in the options
222
231
  */
223
- isCisSupported() {
224
- const cisProfile = this.serverConfig?.profile || this.agentConfig?.profile;
232
+ isComplianceSupported() {
233
+ const complianceProfile = this.serverConfig?.profile || this.agentConfig?.profile;
225
234
 
226
- return !cisProfile || this.profileOptions.map((option) => option.value).includes(cisProfile);
235
+ return !complianceProfile || this.profileOptions.map((option) => option.value).includes(complianceProfile);
227
236
  },
228
237
 
229
238
  disableOptions() {
@@ -252,7 +261,7 @@ export default {
252
261
  return this.selectedVersion?.charts || {};
253
262
  },
254
263
 
255
- showCisProfile() {
264
+ showComplianceProfile() {
256
265
  return (this.provider === 'custom' || this.isElementalCluster) && ( this.serverArgs?.profile || this.agentArgs?.profile );
257
266
  },
258
267
 
@@ -382,10 +391,6 @@ export default {
382
391
  }
383
392
  },
384
393
 
385
- isEdit() {
386
- return this.mode === _EDIT;
387
- },
388
-
389
394
  canNotEditCloudProvider() {
390
395
  if (!this.isEdit) {
391
396
  return false;
@@ -405,14 +410,14 @@ export default {
405
410
  * Display warning about unsupported Azure provider if k8s >= 1.30
406
411
  */
407
412
  showCloudProviderUnsupportedAzureWarning() {
408
- return this.showCloudProvider && this.mode === _CREATE && this.isAzureProviderUnsupported;
413
+ return this.showCloudProvider && this.isCreate && this.isAzureProviderUnsupported;
409
414
  },
410
415
 
411
416
  /**
412
417
  * Display warning about Azure provider migration from k8s versions >= 1.27 to External provider
413
418
  */
414
419
  showCloudProviderMigrateAzureWarning() {
415
- return this.showCloudProvider && this.mode === _EDIT && this.canAzureMigrateOnEdit;
420
+ return this.showCloudProvider && this.isEdit && this.canAzureMigrateOnEdit;
416
421
  }
417
422
  },
418
423
 
@@ -573,52 +578,56 @@ export default {
573
578
  </h3>
574
579
 
575
580
  <Banner
576
- v-if="showCisProfile && !isCisSupported && isEdit"
581
+ v-if="showComplianceProfile && !isComplianceSupported && isEdit"
577
582
  color="info"
578
583
  >
579
- <p v-clean-html="t('cluster.rke2.banner.cisUnsupported', {cisProfile: serverConfig.profile || agentConfig.profile}, true)" />
584
+ <p v-clean-html="t('cluster.rke2.banner.complianceUnsupported', {profile: serverConfig.profile || agentConfig.profile}, true)" />
580
585
  </Banner>
581
586
 
582
- <div class="row mb-10">
583
- <div
584
- v-if="showCisProfile"
585
- class="col span-6"
586
- >
587
+ <div v-if="showComplianceProfile">
588
+ <div class="col span-6">
587
589
  <LabeledSelect
588
590
  v-if="serverArgs && serverArgs.profile && serverConfig"
589
591
  v-model:value="serverConfig.profile"
590
592
  :mode="mode"
591
593
  :options="profileOptions"
592
- :label="t('cluster.rke2.cis.sever')"
593
- @update:value="$emit('cis-changed')"
594
+ :label="t('cluster.rke2.compliance.sever')"
595
+ @update:value="$emit('compliance-changed')"
594
596
  />
595
597
  <LabeledSelect
596
598
  v-else-if="agentArgs && agentArgs.profile && agentConfig"
597
599
  v-model:value="agentConfig.profile"
598
- data-testid="rke2-custom-edit-cis-agent"
600
+ data-testid="rke2-custom-edit-compliance-agent"
599
601
  :mode="mode"
600
602
  :options="profileOptions"
601
- :label="t('cluster.rke2.cis.agent')"
602
- @update:value="$emit('cis-changed')"
603
+ :label="t('cluster.rke2.compliance.agent')"
604
+ @update:value="$emit('compliance-changed')"
605
+ />
606
+ </div>
607
+ <div class="row mb-10">
608
+ <Banner
609
+ v-if="showEnablingComplianceWarning"
610
+ color="warning"
611
+ label-key="cluster.rke2.compliance.warning"
603
612
  />
604
613
  </div>
605
614
  </div>
606
615
 
607
- <template v-if="hasCisOverride">
616
+ <template v-if="hasComplianceOverride">
608
617
  <Checkbox
609
- :value="cisOverride"
618
+ :value="complianceOverride"
610
619
  :mode="mode"
611
- :label="t('cluster.rke2.cis.override')"
620
+ :label="t('cluster.rke2.compliance.override')"
612
621
  @update:value="$emit('psa-default-changed')"
613
622
  />
614
623
 
615
624
  <Banner
616
- v-if="cisOverride"
625
+ v-if="complianceOverride"
617
626
  color="warning"
618
- :label="t('cluster.rke2.banner.cisOverride')"
627
+ :label="t('cluster.rke2.banner.complianceOverride')"
619
628
  />
620
629
  <Banner
621
- v-if="!cisOverride"
630
+ v-if="!complianceOverride"
622
631
  color="info"
623
632
  :label="t('cluster.rke2.banner.psaChange')"
624
633
  />
@@ -78,8 +78,8 @@ export default {
78
78
  this.k8sDistroSubDir = DEFAULT_SUBDIRS.K8S_DISTRO_RKE2;
79
79
  }
80
80
 
81
- if (this.value.k8sDistro) {
82
- this.value.k8sDistro = `${ neu }/${ this.k8sDistroSubDir }`;
81
+ if (this.dataConfigRadioValue === DATA_DIR_RADIO_OPTIONS.COMMON && this.commonConfig) {
82
+ this.value.k8sDistro = `${ this.commonConfig }/${ this.k8sDistroSubDir }`;
83
83
  }
84
84
  }
85
85
  }
@@ -129,9 +129,11 @@ export default {
129
129
  this.commonConfig = DEFAULT_COMMON_BASE_PATH;
130
130
 
131
131
  this.dataConfigRadioValue = DATA_DIR_RADIO_OPTIONS.COMMON;
132
+
133
+ // individual data for each field is set on the watcher for commonConfig a bit further above
132
134
  break;
133
- // default is custom config
134
135
  default:
136
+ // switch "default" is for the "custom" config
135
137
  if (this.mode === _CREATE) {
136
138
  this.commonConfig = '';
137
139
  }
@@ -45,6 +45,10 @@ export default {
45
45
  type: String,
46
46
  default: null
47
47
  },
48
+ projectId: {
49
+ type: String,
50
+ default: null
51
+ },
48
52
 
49
53
  mode: {
50
54
  type: String,
@@ -306,6 +310,7 @@ export default {
306
310
  :value="value.config"
307
311
  :provider="provider"
308
312
  :credential-id="credentialId"
313
+ :project-id="projectId"
309
314
  :pool-index="idx"
310
315
  :pool-id="poolId"
311
316
  :pool-create-mode="value.create"
@@ -104,7 +104,7 @@ export default {
104
104
 
105
105
  configs[h] = {
106
106
  ...entry,
107
- caBundle: base64Encode(entry.caBundle)
107
+ caBundle: entry.caBundle ? base64Encode(entry.caBundle) : null
108
108
  };
109
109
 
110
110
  delete configs[h].hostname;
@@ -172,7 +172,7 @@ export default {
172
172
  :mode="mode"
173
173
  generate-name="registryconfig-auth-"
174
174
  :data-testid="`registry-auth-select-or-create-${i}`"
175
- :cache-secrets="true"
175
+ :cache-secrets="false"
176
176
  @update:value="update"
177
177
  />
178
178
  </div>
@@ -48,7 +48,7 @@ export default {
48
48
  async fetch() {
49
49
  const hash = await allHash({
50
50
  catalog: this.$store.dispatch('catalog/load'),
51
- resourceSet: this.$store.dispatch('cluster/find', { type: BACKUP_RESTORE.RESOURCE_SET, id: this.value?.spec?.resourceSetName || 'rancher-resource-set' }),
51
+ resourceSet: this.$store.dispatch('cluster/find', { type: BACKUP_RESTORE.RESOURCE_SET, id: this.value?.spec?.resourceSetName || 'rancher-resource-set-full' }),
52
52
  apps: this.$store.dispatch('cluster/findAll', { type: CATALOG.APP })
53
53
  });
54
54
 
@@ -49,6 +49,7 @@ export default {
49
49
  required
50
50
  :label="t('secret.basic.username')"
51
51
  :mode="mode"
52
+ data-testid="secret-basic-username"
52
53
  />
53
54
  </div>
54
55
  <div class="col span-6">
@@ -1,22 +1,23 @@
1
1
  <script>
2
2
  import { SECRET_TYPES as TYPES } from '@shell/config/secret';
3
- import { MANAGEMENT, NAMESPACE, DEFAULT_WORKSPACE } from '@shell/config/types';
3
+ import {
4
+ SECRET_SCOPE, SECRET_QUERY_PARAMS,
5
+ CLOUD_CREDENTIAL, _CLONE, _CREATE, _EDIT, _FLAGGED
6
+ } from '@shell/config/query-params';
7
+ import { MANAGEMENT, NAMESPACE, DEFAULT_WORKSPACE, VIRTUAL_TYPES } from '@shell/config/types';
8
+ import { CAPI, UI_PROJECT_SECRET } from '@shell/config/labels-annotations';
9
+ import FormValidation from '@shell/mixins/form-validation';
4
10
  import CreateEditView from '@shell/mixins/create-edit-view';
5
11
  import NameNsDescription from '@shell/components/form/NameNsDescription';
6
12
  import { LabeledInput } from '@components/Form/LabeledInput';
7
13
  import LabeledSelect from '@shell/components/form/LabeledSelect';
8
14
  import CruResource from '@shell/components/CruResource';
9
- import {
10
- CLOUD_CREDENTIAL, _CLONE, _CREATE, _EDIT, _FLAGGED
11
- } from '@shell/config/query-params';
12
15
  import Loading from '@shell/components/Loading';
13
16
  import Tabbed from '@shell/components/Tabbed';
14
17
  import Tab from '@shell/components/Tabbed/Tab';
15
18
  import Labels from '@shell/components/form/Labels';
16
19
  import { HIDE_SENSITIVE } from '@shell/store/prefs';
17
- import { CAPI } from '@shell/config/labels-annotations';
18
20
  import { clear, uniq } from '@shell/utils/array';
19
- import { NAME as MANAGER } from '@shell/config/product/manager';
20
21
  import SelectIconGrid from '@shell/components/SelectIconGrid';
21
22
  import { sortBy } from '@shell/utils/sort';
22
23
  import { ucFirst } from '@shell/utils/string';
@@ -46,12 +47,34 @@ export default {
46
47
  SelectIconGrid
47
48
  },
48
49
 
49
- mixins: [CreateEditView],
50
+ mixins: [CreateEditView, FormValidation],
50
51
 
51
52
  async fetch() {
52
53
  if ( this.isCloud ) {
53
54
  this.nodeDrivers = await this.$store.dispatch('management/findAll', { type: MANAGEMENT.NODE_DRIVER });
54
55
  }
56
+
57
+ const projectScopedLabel = this.value.metadata?.labels?.[UI_PROJECT_SECRET];
58
+ const isProjectScoped = !!projectScopedLabel || (this.isCreate && this.$route.query[SECRET_SCOPE] === SECRET_QUERY_PARAMS.PROJECT_SCOPED);
59
+
60
+ this.isProjectScoped = isProjectScoped;
61
+
62
+ if (isProjectScoped) {
63
+ // If ssp is enabled the store not have all projects. ensure we have them all
64
+ await this.$store.dispatch('management/findAll', { type: MANAGEMENT.PROJECT });
65
+ if (this.isCreate) {
66
+ // Pick first project as default
67
+ this.projectName = this.filteredProjects[0].metadata.name;
68
+
69
+ this.value.metadata.labels = this.value.metadata.labels || {};
70
+
71
+ // Set namespace and project-scoped label
72
+ this.value.metadata.namespace = this.filteredProjects[0].status.backingNamespace;
73
+ this.value.metadata.labels[UI_PROJECT_SECRET] = this.filteredProjects[0].metadata.name;
74
+ } else {
75
+ this.projectName = this.filteredProjects.find((p) => p.metadata.name === projectScopedLabel).metadata.name;
76
+ }
77
+ }
55
78
  },
56
79
 
57
80
  data() {
@@ -89,14 +112,50 @@ export default {
89
112
 
90
113
  return {
91
114
  isCloud,
115
+ isProjectScoped: false,
92
116
  nodeDrivers: null,
93
117
  secretTypes,
94
118
  secretType: this.value._type,
95
- initialSecretType: this.value._type
119
+ initialSecretType: this.value._type,
120
+ projectName: null,
121
+ fvFormRuleSets: [
122
+ {
123
+ path: 'metadata.name',
124
+ rules: ['required'],
125
+ },
126
+ {
127
+ path: 'metadata.namespace',
128
+ rules: ['required'],
129
+ },
130
+ ],
96
131
  };
97
132
  },
98
133
 
99
134
  computed: {
135
+ clusterId() {
136
+ return this.$store.getters['currentCluster'].id;
137
+ },
138
+
139
+ filteredProjects() {
140
+ const allProjects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
141
+
142
+ return allProjects.filter((p) => p.spec?.clusterName === this.clusterId);
143
+ },
144
+
145
+ projectOpts() {
146
+ let projects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
147
+
148
+ // Filter out projects not for the current cluster
149
+ projects = projects.filter((c) => c.spec?.clusterName === this.clusterId);
150
+ const out = projects.map((project) => {
151
+ return {
152
+ label: project.nameDisplay,
153
+ value: project.metadata.name,
154
+ };
155
+ });
156
+
157
+ return out;
158
+ },
100
159
  isCustomSecretCreate() {
101
160
  return this.mode === _CREATE && this.$route.query.type === 'custom';
102
161
  },
@@ -214,12 +273,15 @@ export default {
214
273
  }
215
274
  },
216
275
 
217
- doneRoute() {
218
- if ( this.$store.getters['currentProduct'].name === MANAGER ) {
219
- return 'c-cluster-manager-secret';
220
- } else {
221
- return 'c-cluster-product-resource';
276
+ doneLocationOverride() {
277
+ if (this.isProjectScoped) {
278
+ return {
279
+ ...this.value.listLocation,
280
+ params: { resource: VIRTUAL_TYPES.PROJECT_SECRETS }
281
+ };
222
282
  }
283
+
284
+ return this.value.listLocation;
223
285
  },
224
286
  },
225
287
 
@@ -251,6 +313,13 @@ export default {
251
313
  }
252
314
  }
253
315
 
316
+ if (this.isProjectScoped) {
317
+ // Always create project-scoped secrets in the upstream local cluster
318
+ const url = this.$store.getters['management/urlFor'](this.value.type, this.value.id);
319
+
320
+ return this.save(btnCb, url);
321
+ }
322
+
254
323
  return this.save(btnCb);
255
324
  },
256
325
 
@@ -301,8 +370,25 @@ export default {
301
370
  if (type !== 'custom') {
302
371
  this.value['_type'] = type;
303
372
  }
373
+ },
374
+
375
+ redirectAfterCancel() {
376
+ this.$router.replace(this.doneLocationOverride);
304
377
  }
305
378
  },
379
+
380
+ watch: {
381
+ projectName(neu) {
382
+ if (this.isCreate && neu) {
383
+ this.value.metadata.labels = this.value.metadata.labels || {};
384
+ this.value.metadata.labels[UI_PROJECT_SECRET] = neu;
385
+
386
+ const projectScopedNamespace = this.filteredProjects.find((p) => p.metadata.name === neu).status.backingNamespace;
387
+
388
+ this.value.metadata.namespace = projectScopedNamespace;
389
+ }
390
+ }
391
+ }
306
392
  };
307
393
  </script>
308
394
 
@@ -312,22 +398,47 @@ export default {
312
398
  <CruResource
313
399
  v-else
314
400
  :mode="mode"
315
- :validation-passed="true"
401
+ :validation-passed="fvFormIsValid"
316
402
  :selected-subtype="value._type"
317
403
  :resource="value"
318
404
  :errors="errors"
319
- :done-route="doneRoute"
320
405
  :subtypes="secretSubTypes"
406
+ :cancel-event="true"
407
+ :done-route="doneLocationOverride"
321
408
  @finish="saveSecret"
322
409
  @select-type="selectType"
323
410
  @error="e=>errors = e"
411
+ @cancel="redirectAfterCancel"
324
412
  >
325
413
  <NameNsDescription
414
+ v-if="!isProjectScoped"
326
415
  :value="value"
327
416
  :mode="mode"
328
417
  :namespaced="!isCloud"
329
418
  @update:value="$emit('input', $event)"
330
419
  />
420
+ <NameNsDescription
421
+ v-else
422
+ :value="value"
423
+ :namespaced="false"
424
+ :mode="mode"
425
+ :rules="{
426
+ name: fvGetAndReportPathRules('metadata.name'),
427
+ namespace: fvGetAndReportPathRules('metadata.namespace'),
428
+ }"
429
+ >
430
+ <template #project-selector>
431
+ <LabeledSelect
432
+ v-model:value="projectName"
433
+ class="mr-20"
434
+ :disabled="!isCreate"
435
+ :label="t('namespace.project.label')"
436
+ :options="projectOpts"
437
+ required
438
+ data-testid="secret-project-select"
439
+ />
440
+ </template>
441
+ </NameNsDescription>
331
442
 
332
443
  <div
333
444
  v-if="isCustomSecretCreate"
@@ -373,6 +484,7 @@ export default {
373
484
  <Tabbed
374
485
  v-else
375
486
  :side-tabs="true"
487
+ :use-hash="useTabbedHash"
376
488
  default-tab="data"
377
489
  >
378
490
  <Tab
package/edit/service.vue CHANGED
@@ -21,7 +21,7 @@ import Labels from '@shell/components/form/Labels';
21
21
  import HarvesterServiceAddOnConfig from '@shell/components/HarvesterServiceAddOnConfig';
22
22
  import { clone } from '@shell/utils/object';
23
23
  import { POD, CAPI, HCI } from '@shell/config/types';
24
- import { matching } from '@shell/utils/selector';
24
+ import { matching } from '@shell/utils/selector-typed';
25
25
  import { HARVESTER_NAME as HARVESTER } from '@shell/config/features';
26
26
  import { allHash } from '@shell/utils/promise';
27
27
  import { isHarvesterSatisfiesVersion } from '@shell/utils/cluster';
@@ -98,7 +98,6 @@ export default {
98
98
 
99
99
  return {
100
100
  matchingPods,
101
- allPods: [],
102
101
  defaultServiceTypes: DEFAULT_SERVICE_TYPES,
103
102
  saving: false,
104
103
  sessionAffinityActionLabels: Object.values(SESSION_AFFINITY_ACTION_LABELS)
@@ -109,7 +108,8 @@ export default {
109
108
  ),
110
109
  fvFormRuleSets: [],
111
110
  fvReportedValidationPaths: ['spec'],
112
- closedErrorMessages: []
111
+ closedErrorMessages: [],
112
+ inStore: this.$store.getters['currentStore'](POD),
113
113
  };
114
114
  },
115
115
 
@@ -257,42 +257,27 @@ export default {
257
257
  },
258
258
 
259
259
  methods: {
260
- updateMatchingPods: throttle(function() {
260
+ updateMatchingPods: throttle(async function() {
261
+ // https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec
261
262
  const { value: { spec: { selector = { } } } } = this;
262
- const allInNamespace = this.allPods.filter((pod) => pod.metadata.namespace === this.value?.metadata?.namespace);
263
-
264
- if (isEmpty(selector)) {
265
- this.matchingPods = {
266
- matched: 0,
267
- total: allInNamespace.length,
268
- none: true,
269
- sample: null,
270
- };
271
- } else {
272
- const match = matching(allInNamespace, selector);
273
263
 
274
- this.matchingPods = {
275
- matched: match.length,
276
- total: allInNamespace.length,
277
- none: match.length === 0,
278
- sample: match[0] ? match[0].nameDisplay : null,
279
- };
280
- }
264
+ this.matchingPods = await matching({
265
+ labelSelector: { matchLabels: selector },
266
+ type: POD,
267
+ $store: this.$store,
268
+ inStore: this.inStore,
269
+ namespace: this.value?.metadata?.namespace,
270
+ });
281
271
  }, 250, { leading: true }),
282
272
 
283
273
  async loadPods() {
284
274
  try {
285
- const inStore = this.$store.getters['currentStore'](POD);
286
-
287
275
  const hash = {
288
276
  provClusters: this.$store.dispatch('management/findAll', { type: CAPI.RANCHER_CLUSTER }),
289
- pods: this.$store.dispatch(`${ inStore }/findAll`, { type: POD }), // Used in conjunction with `matches/match/label selectors`. Requires https://github.com/rancher/dashboard/issues/10417 to fix
290
277
  harvesterConfigs: this.$store.dispatch(`management/findAll`, { type: HCI.HARVESTER_CONFIG }),
291
278
  };
292
279
 
293
- const res = await allHash(hash);
294
-
295
- this.allPods = res.pods;
280
+ await allHash(hash);
296
281
  this.updateMatchingPods();
297
282
  } catch (e) { }
298
283
  },
@@ -359,7 +344,10 @@ export default {
359
344
  :rules="{ name: fvGetAndReportPathRules('metadata.name'), namespace: [], description: [] }"
360
345
  />
361
346
 
362
- <Tabbed :side-tabs="true">
347
+ <Tabbed
348
+ :side-tabs="true"
349
+ :use-hash="useTabbedHash"
350
+ >
363
351
  <Tab
364
352
  v-if="checkTypeIs('ExternalName')"
365
353
  name="define-external-name"
@@ -142,7 +142,10 @@ export default {
142
142
  :mode="mode"
143
143
  />
144
144
 
145
- <Tabbed :side-tabs="true">
145
+ <Tabbed
146
+ :side-tabs="true"
147
+ :use-hash="useTabbedHash"
148
+ >
146
149
  <Tab
147
150
  name="data"
148
151
  :label="t('serviceAccount.tabs.serviceAccount.label')"
@@ -237,7 +237,10 @@ export default {
237
237
  :provisioner="provisionerLabel(value.provisioner)"
238
238
  />
239
239
  </Banner>
240
- <Tabbed :side-tabs="true">
240
+ <Tabbed
241
+ :side-tabs="true"
242
+ :use-hash="useTabbedHash"
243
+ >
241
244
  <Tab
242
245
  name="parameters"
243
246
  :label="t('storageClass.parameters.label')"