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
@@ -5,6 +5,7 @@ import AuthConfig from '@shell/mixins/auth-config';
5
5
  import CruResource from '@shell/components/CruResource';
6
6
  import AllowedPrincipals from '@shell/components/auth/AllowedPrincipals';
7
7
  import FileSelector from '@shell/components/form/FileSelector';
8
+ import { Banner } from '@components/Banner';
8
9
  import AuthBanner from '@shell/components/auth/AuthBanner';
9
10
  import AuthProviderWarningBanners from '@shell/edit/auth/AuthProviderWarningBanners';
10
11
  import AdvancedSection from '@shell/components/AdvancedSection.vue';
@@ -13,9 +14,11 @@ import { LabeledInput } from '@components/Form/LabeledInput';
13
14
  import { RadioGroup } from '@components/Form/Radio';
14
15
  import { Checkbox } from '@components/Form/Checkbox';
15
16
  import { BASE_SCOPES } from '@shell/store/auth';
17
+ import CopyToClipboardText from '@shell/components/CopyToClipboardText.vue';
16
18
 
17
19
  export default {
18
20
  components: {
21
+ Banner,
19
22
  Loading,
20
23
  CruResource,
21
24
  AllowedPrincipals,
@@ -27,6 +30,7 @@ export default {
27
30
  LabeledInput,
28
31
  RadioGroup,
29
32
  Checkbox,
33
+ CopyToClipboardText,
30
34
  },
31
35
 
32
36
  mixins: [CreateEditView, AuthConfig],
@@ -85,7 +89,11 @@ export default {
85
89
  return false;
86
90
  }
87
91
 
88
- if ( !this.customEndpoint.value ) {
92
+ if (this.isAmazonCognito) {
93
+ const { issuer } = this.model;
94
+
95
+ return !!(clientId && clientSecret && issuer);
96
+ } else if ( !this.customEndpoint.value ) {
89
97
  const { url, realm } = this.oidcUrls;
90
98
 
91
99
  return !!(clientId && clientSecret && url && realm);
@@ -107,6 +115,20 @@ export default {
107
115
  */
108
116
  requiredScopes() {
109
117
  return this.model.id ? (BASE_SCOPES[this.model.id] || []) ? (BASE_SCOPES[this.model.id] || [])[0].split(' ') : [] : [];
118
+ },
119
+
120
+ requiresCert() {
121
+ // We assume all do, apart from the ones here, which do not
122
+ return !(['cognito'].includes(this.model.id));
123
+ },
124
+
125
+ supportsGroupSearch() {
126
+ // We assume all do, apart from the ones here, which do not
127
+ return !(['cognito'].includes(this.model.id));
128
+ },
129
+
130
+ isAmazonCognito() {
131
+ return this.model?.id === 'cognito';
110
132
  }
111
133
  },
112
134
 
@@ -205,7 +227,9 @@ export default {
205
227
  <tr><td>{{ t(`authConfig.oidc.rancherUrl`) }}: </td><td>{{ model.rancherUrl }}</td></tr>
206
228
  <tr><td>{{ t(`authConfig.oidc.clientId`) }}: </td><td>{{ model.clientId }}</td></tr>
207
229
  <tr><td>{{ t(`authConfig.oidc.issuer`) }}: </td><td>{{ model.issuer }}</td></tr>
208
- <tr><td>{{ t(`authConfig.oidc.authEndpoint`) }}: </td><td>{{ model.authEndpoint }}</td></tr>
230
+ <tr v-if="model.authEndpoint">
231
+ <td>{{ t(`authConfig.oidc.authEndpoint`) }}: </td><td>{{ model.authEndpoint }}</td>
232
+ </tr>
209
233
  </template>
210
234
  </AuthBanner>
211
235
 
@@ -226,6 +250,25 @@ export default {
226
250
 
227
251
  <h3>{{ t(`authConfig.oidc.${NAME}`) }}</h3>
228
252
 
253
+ <Banner
254
+ v-if="!model.enabled && isAmazonCognito"
255
+ color="info"
256
+ class="mb-20 mt-0"
257
+ data-testid="oidc-cognito-banner"
258
+ >
259
+ <div>
260
+ <div
261
+ v-clean-html="t('authConfig.oidc.cognitoHelp', {}, true)"
262
+ />
263
+ <div class="mt-10">
264
+ <CopyToClipboardText
265
+ :plain="true"
266
+ :text="model.rancherUrl"
267
+ />
268
+ </div>
269
+ </div>
270
+ </Banner>
271
+
229
272
  <!-- Auth credentials -->
230
273
  <div class="row mb-20">
231
274
  <div class="col span-6">
@@ -249,7 +292,10 @@ export default {
249
292
  </div>
250
293
 
251
294
  <!-- Key/Certificate -->
252
- <div class="row mb-20">
295
+ <div
296
+ v-if="requiresCert"
297
+ class="row mb-20"
298
+ >
253
299
  <div class="col span-6">
254
300
  <LabeledInput
255
301
  v-model:value="model.privateKey"
@@ -283,7 +329,10 @@ export default {
283
329
  </div>
284
330
 
285
331
  <!-- Allow group search -->
286
- <div class="row mb-20">
332
+ <div
333
+ v-if="supportsGroupSearch"
334
+ class="row mb-20"
335
+ >
287
336
  <div class="col span-6">
288
337
  <Checkbox
289
338
  v-model:value="model.groupSearchEnabled"
@@ -309,102 +358,59 @@ export default {
309
358
  </div>
310
359
  </div>
311
360
 
312
- <!-- Generated vs Specific Endpoints -->
313
- <div class="row mb-20">
314
- <div class="col span-6">
315
- <RadioGroup
316
- v-model:value="customEndpoint.value"
317
- name="customEndpoint"
318
- label-key="authConfig.oidc.customEndpoint.label"
319
- :labels="customEndpoint.labels"
320
- :options="customEndpoint.options"
321
- data-testid="oidc-custom-endpoint"
322
- >
323
- <template #label>
324
- <h4>{{ t('authConfig.oidc.customEndpoint.label') }}</h4>
325
- </template>
326
- </RadioGroup>
327
- </div>
328
- </div>
329
-
330
- <!-- Generated endpoints -->
331
- <div class="row mb-20">
332
- <div class="col span-6">
333
- <LabeledInput
334
- v-model:value="oidcUrls.url"
335
- :label="t(`authConfig.oidc.url`)"
336
- :mode="mode"
337
- :required="!customEndpoint.value"
338
- :disabled="customEndpoint.value"
339
- data-testid="oidc-url"
340
- />
341
- </div>
342
- <div class="col span-6">
343
- <LabeledInput
344
- v-model:value="oidcUrls.realm"
345
- :label="t(`authConfig.oidc.realm`)"
346
- :mode="mode"
347
- :required="!customEndpoint.value"
348
- :disabled="customEndpoint.value"
349
- data-testid="oidc-realm"
350
- />
351
- </div>
352
- </div>
353
-
354
- <!-- Specific Endpoints -->
355
- <div class="row mb-20">
356
- <div class="col span-6">
357
- <LabeledInput
358
- v-model:value="model.rancherUrl"
359
- :label="t(`authConfig.oidc.rancherUrl`)"
360
- :mode="mode"
361
- required
362
- :disabled="!customEndpoint.value"
363
- data-testid="oidc-rancher-url"
364
- />
365
- </div>
366
- </div>
367
-
368
- <div class="row mb-20">
369
- <div class="col span-6">
370
- <LabeledInput
371
- v-model:value="model.issuer"
372
- :label="t(`authConfig.oidc.issuer`)"
373
- :mode="mode"
374
- required
375
- :disabled="!customEndpoint.value"
376
- data-testid="oidc-issuer"
377
- />
378
- </div>
379
- <div class="col span-6">
380
- <LabeledInput
381
- v-model:value="model.authEndpoint"
382
- :label="t(`authConfig.oidc.authEndpoint`)"
383
- :mode="mode"
384
- :disabled="!customEndpoint.value"
385
- :required="requiresAuthEndpoint"
386
- data-testid="oidc-auth-endpoint"
387
- />
361
+ <template v-if="!isAmazonCognito">
362
+ <!-- Generated vs Specific Endpoints -->
363
+ <div class="row mb-20">
364
+ <div class="col span-6">
365
+ <RadioGroup
366
+ v-model:value="customEndpoint.value"
367
+ name="customEndpoint"
368
+ label-key="authConfig.oidc.customEndpoint.label"
369
+ :labels="customEndpoint.labels"
370
+ :options="customEndpoint.options"
371
+ data-testid="oidc-custom-endpoint"
372
+ >
373
+ <template #label>
374
+ <h4>{{ t('authConfig.oidc.customEndpoint.label') }}</h4>
375
+ </template>
376
+ </RadioGroup>
377
+ </div>
388
378
  </div>
389
- </div>
390
379
 
391
- <!-- Advanced section -->
392
- <AdvancedSection :mode="mode">
380
+ <!-- Generated endpoints -->
393
381
  <div class="row mb-20">
394
382
  <div class="col span-6">
395
383
  <LabeledInput
396
- v-model:value="model.jwksUrl"
397
- :label="t(`authConfig.oidc.jwksUrl`)"
384
+ v-model:value="oidcUrls.url"
385
+ :label="t(`authConfig.oidc.url`)"
398
386
  :mode="mode"
399
- :disabled="!customEndpoint.value"
387
+ :required="!customEndpoint.value"
388
+ :disabled="customEndpoint.value"
389
+ data-testid="oidc-url"
400
390
  />
401
391
  </div>
402
392
  <div class="col span-6">
403
393
  <LabeledInput
404
- v-model:value="model.tokenEndpoint"
405
- :label="t(`authConfig.oidc.tokenEndpoint`)"
394
+ v-model:value="oidcUrls.realm"
395
+ :label="t(`authConfig.oidc.realm`)"
406
396
  :mode="mode"
397
+ :required="!customEndpoint.value"
398
+ :disabled="customEndpoint.value"
399
+ data-testid="oidc-realm"
400
+ />
401
+ </div>
402
+ </div>
403
+
404
+ <!-- Specific Endpoints -->
405
+ <div class="row mb-20">
406
+ <div class="col span-6">
407
+ <LabeledInput
408
+ v-model:value="model.rancherUrl"
409
+ :label="t(`authConfig.oidc.rancherUrl`)"
410
+ :mode="mode"
411
+ required
407
412
  :disabled="!customEndpoint.value"
413
+ data-testid="oidc-rancher-url"
408
414
  />
409
415
  </div>
410
416
  </div>
@@ -412,22 +418,82 @@ export default {
412
418
  <div class="row mb-20">
413
419
  <div class="col span-6">
414
420
  <LabeledInput
415
- v-model:value="model.userInfoEndpoint"
416
- :label="t(`authConfig.oidc.userInfoEndpoint`)"
421
+ v-model:value="model.issuer"
422
+ :label="t(`authConfig.oidc.issuer`)"
417
423
  :mode="mode"
424
+ required
418
425
  :disabled="!customEndpoint.value"
426
+ data-testid="oidc-issuer"
419
427
  />
420
428
  </div>
421
429
  <div class="col span-6">
422
430
  <LabeledInput
423
- v-model:value="model.acrValue"
424
- :label="t(`authConfig.oidc.acrValue`)"
431
+ v-model:value="model.authEndpoint"
432
+ :label="t(`authConfig.oidc.authEndpoint`)"
425
433
  :mode="mode"
426
434
  :disabled="!customEndpoint.value"
435
+ :required="requiresAuthEndpoint"
436
+ data-testid="oidc-auth-endpoint"
437
+ />
438
+ </div>
439
+ </div>
440
+
441
+ <!-- Advanced section -->
442
+ <AdvancedSection :mode="mode">
443
+ <div class="row mb-20">
444
+ <div class="col span-6">
445
+ <LabeledInput
446
+ v-model:value="model.jwksUrl"
447
+ :label="t(`authConfig.oidc.jwksUrl`)"
448
+ :mode="mode"
449
+ :disabled="!customEndpoint.value"
450
+ />
451
+ </div>
452
+ <div class="col span-6">
453
+ <LabeledInput
454
+ v-model:value="model.tokenEndpoint"
455
+ :label="t(`authConfig.oidc.tokenEndpoint`)"
456
+ :mode="mode"
457
+ :disabled="!customEndpoint.value"
458
+ />
459
+ </div>
460
+ </div>
461
+
462
+ <div class="row mb-20">
463
+ <div class="col span-6">
464
+ <LabeledInput
465
+ v-model:value="model.userInfoEndpoint"
466
+ :label="t(`authConfig.oidc.userInfoEndpoint`)"
467
+ :mode="mode"
468
+ :disabled="!customEndpoint.value"
469
+ />
470
+ </div>
471
+ <div class="col span-6">
472
+ <LabeledInput
473
+ v-model:value="model.acrValue"
474
+ :label="t(`authConfig.oidc.acrValue`)"
475
+ :mode="mode"
476
+ :disabled="!customEndpoint.value"
477
+ />
478
+ </div>
479
+ </div>
480
+ </AdvancedSection>
481
+ </template>
482
+
483
+ <template v-if="isAmazonCognito">
484
+ <h3>{{ t(`authConfig.oidc.cognitoIssuer`) }}</h3>
485
+ <div class="row mb-20">
486
+ <div class="col span-6">
487
+ <LabeledInput
488
+ v-model:value="model.issuer"
489
+ :label="t(`authConfig.oidc.issuer`)"
490
+ :mode="mode"
491
+ required
492
+ data-testid="oidc-issuer"
427
493
  />
428
494
  </div>
429
495
  </div>
430
- </AdvancedSection>
496
+ </template>
431
497
  </template>
432
498
  </CruResource>
433
499
  </div>
@@ -206,7 +206,10 @@ export default {
206
206
  :mode="mode"
207
207
  />
208
208
 
209
- <Tabbed :side-tabs="true">
209
+ <Tabbed
210
+ :side-tabs="true"
211
+ :use-hash="useTabbedHash"
212
+ >
210
213
  <Tab
211
214
  name="target"
212
215
  :label="t('hpa.tabs.target')"
@@ -5,7 +5,7 @@ import { LabeledInput } from '@components/Form/LabeledInput';
5
5
  import UnitInput from '@shell/components/form/UnitInput';
6
6
  import { Banner } from '@components/Banner';
7
7
  import Loading from '@shell/components/Loading';
8
- import { CIS, CONFIG_MAP } from '@shell/config/types';
8
+ import { COMPLIANCE, CONFIG_MAP } from '@shell/config/types';
9
9
  import { mapGetters } from 'vuex';
10
10
  import createEditView from '@shell/mixins/create-edit-view';
11
11
  import { allHash } from '@shell/utils/promise';
@@ -14,7 +14,7 @@ import { RadioGroup } from '@components/Form/Radio';
14
14
  import { get } from '@shell/utils/object';
15
15
  import { _VIEW, _CREATE } from '@shell/config/query-params';
16
16
  import { isValidCron } from 'cron-validator';
17
- import { fetchSpecsScheduledScanConfig } from '@shell/models/cis.cattle.io.clusterscan';
17
+ import { fetchSpecsScheduledScanConfig } from '@shell/models/compliance.cattle.io.clusterscan';
18
18
 
19
19
  const semver = require('semver');
20
20
 
@@ -72,14 +72,14 @@ export default {
72
72
  this.scanAlertRule = this.value.spec.scheduledScanConfig.scanAlertRule;
73
73
 
74
74
  const hash = await allHash({
75
- profiles: this.$store.dispatch('cluster/findAll', { type: CIS.CLUSTER_SCAN_PROFILE }),
76
- benchmarks: this.$store.dispatch('cluster/findAll', { type: CIS.BENCHMARK }),
75
+ profiles: this.$store.dispatch('cluster/findAll', { type: COMPLIANCE.CLUSTER_SCAN_PROFILE }),
76
+ benchmarks: this.$store.dispatch('cluster/findAll', { type: COMPLIANCE.BENCHMARK }),
77
77
  // Ensure the clusterscan model has everything it needs
78
78
  hasScheduledScanConfig: fetchSpecsScheduledScanConfig(this.schema),
79
79
  });
80
80
 
81
81
  try {
82
- this.defaultConfigMap = await this.$store.dispatch('cluster/find', { type: CONFIG_MAP, id: 'cis-operator-system/default-clusterscanprofiles' });
82
+ this.defaultConfigMap = await this.$store.dispatch('cluster/find', { type: CONFIG_MAP, id: 'compliance-operator-system/default-clusterscanprofiles' });
83
83
  } catch {}
84
84
 
85
85
  this.allProfiles = hash.profiles;
@@ -111,7 +111,7 @@ export default {
111
111
  ...mapGetters({ currentCluster: 'currentCluster', t: 'i18n/t' }),
112
112
 
113
113
  canBeScheduled() {
114
- // check if scan was created and run with an older cis install that doesn't support scheduling/alerting/warn state
114
+ // check if scan was created and run with an older compliance install that doesn't support scheduling/alerting/warn state
115
115
  if (this.mode === _VIEW) {
116
116
  const warn = get(this.value, 'status.summary.warn');
117
117
 
@@ -124,7 +124,7 @@ export default {
124
124
  validProfiles() {
125
125
  const profileNames = this.allProfiles.filter((profile) => {
126
126
  const benchmarkVersion = profile?.spec?.benchmarkVersion;
127
- const benchmark = this.$store.getters['cluster/byId'](CIS.BENCHMARK, benchmarkVersion);
127
+ const benchmark = this.$store.getters['cluster/byId'](COMPLIANCE.BENCHMARK, benchmarkVersion);
128
128
 
129
129
  return this.validateBenchmark(benchmark, this.currentCluster );
130
130
  }).map((profile) => {
@@ -136,12 +136,12 @@ export default {
136
136
 
137
137
  defaultProfile() {
138
138
  if (this.defaultConfigMap) {
139
- const profiles = this.defaultConfigMap.data;
139
+ const profiles = this.defaultConfigMap.data || {}; // The config map might be empty, so ensure we have an object
140
140
  const provider = this.currentCluster.status.provider;
141
141
 
142
142
  let name = profiles[provider] || profiles.default;
143
143
 
144
- if (name.includes(':')) {
144
+ if (name?.includes(':')) {
145
145
  const pairs = name.split('\n');
146
146
  const clusterVersion = this.currentCluster.kubernetesVersion;
147
147
 
@@ -160,21 +160,20 @@ export default {
160
160
  if (name) {
161
161
  const profile = this.allProfiles.find((profile) => profile.id === name);
162
162
  const benchmarkVersion = profile?.spec?.benchmarkVersion;
163
- const benchmark = this.$store.getters['cluster/byId'](CIS.BENCHMARK, benchmarkVersion);
163
+ const benchmark = this.$store.getters['cluster/byId'](COMPLIANCE.BENCHMARK, benchmarkVersion);
164
164
 
165
165
  if (this.validateBenchmark(benchmark, this.currentCluster )) {
166
166
  return profile;
167
167
  }
168
168
  }
169
- const cis16 = this.validProfiles.find((profile) => profile.value === 'cis-1.6-profile');
170
169
 
171
- if (cis16) {
172
- return this.allProfiles.find((profile) => profile.id === 'cis-1.6-profile');
173
- } else {
174
- return this.allProfiles.find((profile) => profile.id === 'cis-1.5-profile');
170
+ // Just use the first one as the default - check the profiles we consider to be valid for this cluster first
171
+ if (this.validProfiles.length > 0) {
172
+ return this.allProfiles.find((profile) => profile.id === this.validProfiles[0].value) || null;
175
173
  }
176
174
  }
177
175
 
176
+ // Can not find a default
178
177
  return null;
179
178
  },
180
179
 
@@ -217,7 +216,7 @@ export default {
217
216
  defaultProfile(neu) {
218
217
  if (neu && !this.value.spec.scanProfileName) {
219
218
  const benchmarkVersion = neu?.spec?.benchmarkVersion;
220
- const benchmark = this.$store.getters['cluster/byId'](CIS.BENCHMARK, benchmarkVersion);
219
+ const benchmark = this.$store.getters['cluster/byId'](COMPLIANCE.BENCHMARK, benchmarkVersion);
221
220
 
222
221
  if (!this.validateBenchmark(benchmark, this.currentCluster)) {
223
222
  return;
@@ -281,7 +280,7 @@ export default {
281
280
  <Banner
282
281
  v-if="!validProfiles.length"
283
282
  color="warning"
284
- :label="t('cis.noProfiles')"
283
+ :label="t('compliance.noProfiles')"
285
284
  />
286
285
 
287
286
  <div
@@ -292,7 +291,7 @@ export default {
292
291
  <LabeledSelect
293
292
  v-model:value="value.spec.scanProfileName"
294
293
  :mode="mode"
295
- :label="t('cis.profile')"
294
+ :label="t('compliance.profile')"
296
295
  :options="validProfiles"
297
296
  />
298
297
  </div>
@@ -300,8 +299,8 @@ export default {
300
299
  v-if="canBeScheduled"
301
300
  class="col span-6"
302
301
  >
303
- <span>{{ t('cis.scoreWarning.label') }}</span> <i
304
- v-clean-tooltip="t('cis.scoreWarning.protip')"
302
+ <span>{{ t('compliance.scoreWarning.label') }}</span> <i
303
+ v-clean-tooltip="t('compliance.scoreWarning.protip')"
305
304
  class="icon icon-info"
306
305
  />
307
306
  <RadioGroup
@@ -309,19 +308,19 @@ export default {
309
308
  :mode="mode"
310
309
  name="scoreWarning"
311
310
  :options="['pass', 'fail']"
312
- :labels="[t('cis.scan.pass'), t('cis.scan.fail')]"
311
+ :labels="[t('compliance.scan.pass'), t('compliance.scan.fail')]"
313
312
  />
314
313
  </div>
315
314
  </div>
316
315
  <template v-if="canBeScheduled">
317
- <h3>{{ t('cis.scheduling.title') }}</h3>
316
+ <h3>{{ t('compliance.scheduling.title') }}</h3>
318
317
  <div class="row mb-20">
319
318
  <div class="col">
320
319
  <RadioGroup
321
320
  v-model:value="isScheduled"
322
321
  :mode="mode"
323
322
  name="scheduling"
324
- :options="[ {value: false, label: t('cis.scheduling.disable')}, {value: true, label: t('cis.scheduling.enable')}]"
323
+ :options="[ {value: false, label: t('compliance.scheduling.disable')}, {value: true, label: t('compliance.scheduling.enable')}]"
325
324
  />
326
325
  </div>
327
326
  </div>
@@ -332,23 +331,23 @@ export default {
332
331
  v-model:value="scheduledScanConfig.cronSchedule"
333
332
  required
334
333
  :mode="mode"
335
- :label="t('cis.cronSchedule.label')"
336
- :placeholder="t('cis.cronSchedule.placeholder')"
334
+ :label="t('compliance.cronSchedule.label')"
335
+ :placeholder="t('compliance.cronSchedule.placeholder')"
337
336
  type="cron"
338
337
  />
339
338
  </div>
340
339
  <div class="col span-6">
341
340
  <UnitInput
342
341
  v-model:value="scheduledScanConfig.retentionCount"
343
- :suffix="t('cis.reports')"
342
+ :suffix="t('compliance.reports')"
344
343
  type="number"
345
344
  :mode="mode"
346
- :label="t('cis.retention')"
345
+ :label="t('compliance.retention')"
347
346
  />
348
347
  </div>
349
348
  </div>
350
349
  <h3 class="mt-20">
351
- {{ t('cis.alerting') }}
350
+ {{ t('compliance.alerting') }}
352
351
  </h3>
353
352
  <div class="row mb-20">
354
353
  <div class="col span-12">
@@ -357,17 +356,17 @@ export default {
357
356
  class="mt-0"
358
357
  :color="hasAlertManager ? 'info' : 'warning'"
359
358
  >
360
- <span v-clean-html="t('cis.alertNeeded', {link: monitoringUrl}, true)" />
359
+ <span v-clean-html="t('compliance.alertNeeded', {link: monitoringUrl}, true)" />
361
360
  </banner>
362
361
  <Checkbox
363
362
  v-model:value="scanAlertRule.alertOnComplete"
364
363
  :mode="mode"
365
- :label="t('cis.alertOnComplete')"
364
+ :label="t('compliance.alertOnComplete')"
366
365
  />
367
366
  <Checkbox
368
367
  v-model:value="scanAlertRule.alertOnFailure"
369
368
  :mode="mode"
370
- :label="t('cis.alertOnFailure')"
369
+ :label="t('compliance.alertOnFailure')"
371
370
  />
372
371
  </div>
373
372
  </div>
@@ -117,7 +117,7 @@ export default {
117
117
  :clearable="true"
118
118
  :options="providers"
119
119
  :mode="mode"
120
- :label="t('cis.clusterProvider')"
120
+ :label="t('compliance.clusterProvider')"
121
121
  />
122
122
  </div>
123
123
  <div class="col span-6">
@@ -127,7 +127,7 @@ export default {
127
127
  option-key="id"
128
128
  option-label="id"
129
129
  :mode="mode"
130
- :label="t('cis.customConfigMap')"
130
+ :label="t('compliance.customConfigMap')"
131
131
  :resource-type="CONFIG_MAP"
132
132
  :paginated-resource-settings="configMapPaginateSettings"
133
133
  />
@@ -138,14 +138,14 @@ export default {
138
138
  <LabeledInput
139
139
  v-model:value="value.spec.minKubernetesVersion"
140
140
  :mode="mode"
141
- :label="t('cis.minKubernetesVersion')"
141
+ :label="t('compliance.minKubernetesVersion')"
142
142
  />
143
143
  </div>
144
144
  <div class="col span-6">
145
145
  <LabeledInput
146
146
  v-model:value="value.spec.maxKubernetesVersion"
147
147
  :mode="mode"
148
- :label="t('cis.maxKubernetesVersion')"
148
+ :label="t('compliance.maxKubernetesVersion')"
149
149
  />
150
150
  </div>
151
151
  </div>
@@ -5,7 +5,7 @@ import ArrayList from '@shell/components/form/ArrayList';
5
5
  import createEditView from '@shell/mixins/create-edit-view';
6
6
  import CruResource from '@shell/components/CruResource';
7
7
  import { mapGetters } from 'vuex';
8
- import { CIS } from '@shell/config/types';
8
+ import { COMPLIANCE } from '@shell/config/types';
9
9
  const semver = require('semver');
10
10
 
11
11
  export default {
@@ -33,7 +33,7 @@ export default {
33
33
  },
34
34
 
35
35
  async fetch() {
36
- this.allBenchmarks = await this.$store.dispatch('cluster/findAll', { type: CIS.BENCHMARK });
36
+ this.allBenchmarks = await this.$store.dispatch('cluster/findAll', { type: COMPLIANCE.BENCHMARK });
37
37
  },
38
38
 
39
39
  data() {
@@ -129,7 +129,7 @@ export default {
129
129
  <LabeledSelect
130
130
  v-model:value="value.spec.benchmarkVersion"
131
131
  :mode="mode"
132
- :label="t('cis.benchmarkVersion')"
132
+ :label="t('compliance.benchmarkVersion')"
133
133
  :options="compatibleBenchmarkNames"
134
134
  />
135
135
  </div>
@@ -139,8 +139,8 @@ export default {
139
139
  <div class="col span-6">
140
140
  <ArrayList
141
141
  v-model:value="value.spec.skipTests"
142
- :title="t('cis.testsToSkip')"
143
- :value-placeholder="t('cis.testID')"
142
+ :title="t('compliance.testsToSkip')"
143
+ :value-placeholder="t('compliance.testID')"
144
144
  :mode="mode"
145
145
  />
146
146
  </div>
@@ -1,4 +1,5 @@
1
1
  <script>
2
+ import jsyaml from 'js-yaml';
2
3
  import CreateEditView from '@shell/mixins/create-edit-view';
3
4
  import CruResource from '@shell/components/CruResource';
4
5
  import NameNsDescription from '@shell/components/form/NameNsDescription';
@@ -66,7 +67,9 @@ export default {
66
67
  const yaml = await this.$refs.cru.createResourceYaml(this.yamlModifiers);
67
68
 
68
69
  try {
69
- await this.value.saveYaml(yaml);
70
+ const initialYaml = jsyaml.dump(this.initialValue);
71
+
72
+ await this.value.saveYaml(yaml, initialYaml);
70
73
  this.done();
71
74
  } catch (err) {
72
75
  this.errors.push(err);
@@ -105,7 +108,10 @@ export default {
105
108
  :register-before-hook="registerBeforeHook"
106
109
  />
107
110
 
108
- <Tabbed :side-tabs="true">
111
+ <Tabbed
112
+ :side-tabs="true"
113
+ :use-hash="useTabbedHash"
114
+ >
109
115
  <Tab
110
116
  name="data"
111
117
  :label="t('configmap.tabs.data.label')"