@rancher/shell 3.0.5-rc.5 → 3.0.5-rc.7

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 (361) hide show
  1. package/assets/data/aws-regions.json +1 -0
  2. package/assets/images/key.svg +17 -0
  3. package/assets/styles/base/_spacing.scss +2 -2
  4. package/assets/styles/base/_variables.scss +17 -11
  5. package/assets/styles/global/_form.scss +1 -1
  6. package/assets/styles/global/_labeled-input.scss +1 -1
  7. package/assets/styles/themes/_dark.scss +5 -0
  8. package/assets/styles/themes/_light.scss +11 -2
  9. package/assets/styles/vendor/vue-select.scss +1 -1
  10. package/assets/translations/en-us.yaml +426 -64
  11. package/assets/translations/zh-hans.yaml +3 -4
  12. package/cloud-credential/gcp.vue +9 -1
  13. package/components/AppModal.vue +2 -0
  14. package/components/CodeMirror.vue +2 -2
  15. package/components/ConfigMapSettings/Settings.vue +377 -0
  16. package/components/ConfigMapSettings/index.vue +354 -0
  17. package/components/CruResource.vue +1 -2
  18. package/components/DetailText.vue +61 -11
  19. package/components/Drawer/Chrome.vue +115 -0
  20. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  21. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  22. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  23. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  24. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
  25. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  26. package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
  27. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  28. package/components/Drawer/ResourceDetailDrawer/index.vue +111 -0
  29. package/components/GrowlManager.vue +16 -15
  30. package/components/IconOrSvg.vue +5 -0
  31. package/components/KeyValueView.vue +1 -1
  32. package/components/Loading.vue +1 -1
  33. package/components/LocaleSelector.vue +9 -1
  34. package/components/PaginatedResourceTable.vue +46 -1
  35. package/components/ProgressBarMulti.vue +1 -0
  36. package/components/PromptModal.vue +6 -1
  37. package/components/PromptRestore.vue +22 -44
  38. package/components/RelatedResources.vue +4 -12
  39. package/components/Resource/Detail/Additional.vue +46 -0
  40. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +1 -1
  41. package/components/Resource/Detail/Metadata/Annotations/index.vue +5 -0
  42. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  43. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +47 -256
  44. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
  45. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +34 -5
  46. package/components/Resource/Detail/Metadata/KeyValue.vue +32 -22
  47. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +1 -1
  48. package/components/Resource/Detail/Metadata/Labels/index.vue +4 -0
  49. package/components/Resource/Detail/Metadata/Rectangle.vue +3 -1
  50. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +1 -1
  51. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +1 -1
  52. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  53. package/components/Resource/Detail/Metadata/composables.ts +60 -11
  54. package/components/Resource/Detail/Metadata/index.vue +12 -5
  55. package/components/Resource/Detail/Page.vue +15 -0
  56. package/components/Resource/Detail/ResourceRow.vue +37 -18
  57. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  58. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  59. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  60. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  61. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  62. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  63. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  64. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  65. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  66. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  67. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  68. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  69. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  70. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  71. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  72. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  73. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  74. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  75. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  76. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  77. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  78. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  79. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  80. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  81. package/components/Resource/Detail/SpacedRow.vue +1 -1
  82. package/components/Resource/Detail/TitleBar/Title.vue +2 -1
  83. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +1 -1
  84. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +1 -1
  85. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  86. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +1 -1
  87. package/components/Resource/Detail/TitleBar/composables.ts +45 -0
  88. package/components/Resource/Detail/TitleBar/index.vue +85 -13
  89. package/components/Resource/Detail/composables.ts +45 -0
  90. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  91. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  92. package/components/ResourceDetail/Masthead/index.vue +65 -0
  93. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  94. package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +1 -1
  95. package/components/ResourceDetail/__tests__/index.test.ts +26 -5
  96. package/components/ResourceDetail/index.vue +33 -17
  97. package/components/ResourceDetail/legacy.vue +18 -1
  98. package/components/ResourceList/Masthead.vue +6 -0
  99. package/components/ResourceList/index.vue +1 -0
  100. package/components/ResourceTable.vue +6 -1
  101. package/components/ResourceYaml.vue +15 -2
  102. package/components/RichTranslation.vue +106 -0
  103. package/components/SlideInPanelManager.vue +46 -11
  104. package/components/SortableTable/index.vue +1 -1
  105. package/components/SortableTable/selection.js +0 -1
  106. package/components/StateDot/index.vue +28 -0
  107. package/components/Tabbed/index.vue +17 -16
  108. package/components/Wizard.vue +4 -2
  109. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  110. package/components/__tests__/GrowlManager.test.ts +0 -25
  111. package/components/__tests__/PromptRestore.test.ts +1 -65
  112. package/components/__tests__/RichTranslation.test.ts +115 -0
  113. package/components/auth/login/ldap.vue +1 -1
  114. package/components/fleet/FleetApplications.vue +0 -7
  115. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  116. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  117. package/components/fleet/FleetClusters.vue +25 -6
  118. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  119. package/components/fleet/FleetHelmOps.vue +8 -0
  120. package/components/fleet/FleetRepos.vue +1 -6
  121. package/components/fleet/FleetResources.vue +4 -5
  122. package/components/fleet/FleetValuesFrom.vue +295 -0
  123. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  124. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  125. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +13 -13
  126. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  127. package/components/fleet/dashboard/ResourceCard.vue +1 -0
  128. package/components/fleet/dashboard/ResourceCardSummary.vue +1 -5
  129. package/components/fleet/dashboard/ResourceDetails.vue +8 -10
  130. package/components/fleet/dashboard/ResourcePanel.vue +17 -9
  131. package/components/form/ArrayList.vue +13 -2
  132. package/components/form/ChangePassword.vue +3 -1
  133. package/components/form/FileImageSelector.vue +1 -1
  134. package/components/form/Footer.vue +10 -4
  135. package/components/form/KeyValue.vue +81 -43
  136. package/components/form/LabeledSelect.vue +56 -16
  137. package/components/form/Labels.vue +90 -17
  138. package/components/form/MatchExpressions.vue +46 -5
  139. package/components/form/NameNsDescription.vue +2 -1
  140. package/components/form/Networking.vue +24 -19
  141. package/components/form/ResourceLabeledSelect.vue +4 -3
  142. package/components/form/ResourceSelector.vue +1 -0
  143. package/components/form/ResourceTabs/index.vue +5 -0
  144. package/components/form/SecretSelector.vue +9 -2
  145. package/components/form/Select.vue +57 -19
  146. package/components/form/SelectOrCreateAuthSecret.vue +6 -3
  147. package/components/form/SimpleSecretSelector.vue +9 -2
  148. package/components/form/Taints.vue +21 -2
  149. package/components/form/UnitInput.vue +8 -0
  150. package/components/form/ValueFromResource.vue +1 -1
  151. package/components/form/__tests__/LabeledSelect.test.ts +8 -4
  152. package/components/form/__tests__/Labels.test.ts +360 -0
  153. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  154. package/components/form/__tests__/Networking.test.ts +116 -0
  155. package/components/form/__tests__/Select.test.ts +5 -2
  156. package/components/formatter/FleetApplicationSource.vue +1 -1
  157. package/components/formatter/PodImages.vue +1 -1
  158. package/components/formatter/WorkloadHealthScale.vue +1 -1
  159. package/components/formatter/__tests__/LiveDate.test.ts +10 -2
  160. package/components/google/AccountAccess.vue +209 -0
  161. package/components/google/types/gcp.d.ts +136 -0
  162. package/components/google/types/index.d.ts +101 -0
  163. package/components/google/util/__mocks__/gcp.ts +465 -0
  164. package/components/google/util/formatter.ts +82 -0
  165. package/components/google/util/gcp.ts +134 -0
  166. package/components/google/util/index.d.ts +11 -0
  167. package/components/nav/Favorite.vue +1 -1
  168. package/components/nav/Group.vue +71 -45
  169. package/components/nav/Header.vue +5 -1
  170. package/components/nav/NamespaceFilter.vue +13 -1
  171. package/components/nav/NotificationCenter/Notification.vue +510 -0
  172. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  173. package/components/nav/NotificationCenter/index.vue +148 -0
  174. package/composables/drawer.ts +26 -0
  175. package/composables/resources.test.ts +63 -0
  176. package/composables/resources.ts +38 -0
  177. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  178. package/config/labels-annotations.js +8 -0
  179. package/config/pagination-table-headers.js +8 -1
  180. package/config/product/auth.js +16 -1
  181. package/config/product/{cis.js → compliance.js} +23 -26
  182. package/config/product/explorer.js +32 -3
  183. package/config/product/fleet.js +7 -0
  184. package/config/product/manager.js +0 -1
  185. package/config/product/settings.js +22 -11
  186. package/config/query-params.js +13 -0
  187. package/config/roles.ts +1 -1
  188. package/config/router/navigation-guards/authentication.js +51 -2
  189. package/config/router/routes.js +47 -31
  190. package/config/settings.ts +21 -3
  191. package/config/store.js +2 -0
  192. package/config/system-namespaces.js +1 -1
  193. package/config/table-headers.js +32 -3
  194. package/config/types.js +16 -7
  195. package/config/version.js +1 -1
  196. package/core/plugin.ts +32 -7
  197. package/core/types.ts +18 -1
  198. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  199. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  200. package/detail/management.cattle.io.oidcclient.vue +369 -0
  201. package/detail/node.vue +2 -2
  202. package/detail/pod.vue +2 -2
  203. package/detail/provisioning.cattle.io.cluster.vue +3 -47
  204. package/detail/service.vue +10 -1
  205. package/detail/workload/index.vue +8 -2
  206. package/dialog/ExtensionCatalogUninstallDialog.vue +7 -4
  207. package/dialog/GenericPrompt.vue +1 -1
  208. package/dialog/ImportDialog.vue +8 -8
  209. package/dialog/OidcClientSecretDialog.vue +117 -0
  210. package/dialog/RotateEncryptionKeyDialog.vue +10 -30
  211. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  212. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +5 -2
  213. package/edit/auth/ldap/__tests__/config.test.ts +14 -0
  214. package/edit/auth/ldap/config.vue +24 -0
  215. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  216. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  217. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  218. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  219. package/edit/configmap.vue +8 -2
  220. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  221. package/edit/fleet.cattle.io.gitrepo.vue +44 -222
  222. package/edit/fleet.cattle.io.helmop.vue +44 -269
  223. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  224. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  225. package/edit/logging-flow/index.vue +1 -0
  226. package/edit/logging.banzaicloud.io.output/index.vue +1 -0
  227. package/edit/management.cattle.io.fleetworkspace.vue +1 -0
  228. package/edit/management.cattle.io.oidcclient.vue +162 -0
  229. package/edit/management.cattle.io.project.vue +4 -1
  230. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  231. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  232. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  233. package/edit/monitoring.coreos.com.receiver/auth.vue +30 -30
  234. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  235. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  236. package/edit/monitoring.coreos.com.route.vue +1 -0
  237. package/edit/namespace.vue +1 -0
  238. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  239. package/edit/networking.k8s.io.ingress/Certificate.vue +12 -12
  240. package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +165 -0
  241. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  242. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +7 -2
  243. package/edit/networking.k8s.io.networkpolicy/index.vue +6 -2
  244. package/edit/node.vue +1 -0
  245. package/edit/persistentvolume/index.vue +4 -1
  246. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +3 -2
  247. package/edit/provisioning.cattle.io.cluster/rke2.vue +516 -426
  248. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +48 -39
  249. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  250. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
  251. package/edit/resources.cattle.io.restore.vue +1 -1
  252. package/edit/secret/basic.vue +1 -0
  253. package/edit/secret/index.vue +127 -15
  254. package/edit/service.vue +4 -1
  255. package/edit/serviceaccount.vue +4 -1
  256. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  257. package/edit/workload/index.vue +5 -0
  258. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  259. package/list/management.cattle.io.oidcclient.vue +108 -0
  260. package/list/node.vue +2 -0
  261. package/list/projectsecret.vue +345 -0
  262. package/list/secret.vue +109 -0
  263. package/machine-config/amazonec2.vue +3 -24
  264. package/machine-config/components/GCEImage.vue +374 -0
  265. package/machine-config/google.vue +617 -0
  266. package/mixins/__tests__/brand.spec.ts +170 -0
  267. package/mixins/brand.js +16 -17
  268. package/mixins/create-edit-view/impl.js +10 -1
  269. package/mixins/create-edit-view/index.js +5 -0
  270. package/mixins/resource-fetch-api-pagination.js +24 -8
  271. package/mixins/resource-fetch.js +3 -1
  272. package/mixins/vue-select-overrides.js +1 -0
  273. package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
  274. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  275. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  276. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  277. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  278. package/models/fleet-application.js +8 -79
  279. package/models/fleet.cattle.io.cluster.js +13 -2
  280. package/models/fleet.cattle.io.gitrepo.js +2 -2
  281. package/models/fleet.cattle.io.helmop.js +9 -39
  282. package/models/management.cattle.io.fleetworkspace.js +2 -1
  283. package/models/management.cattle.io.oidcclient.js +18 -0
  284. package/models/management.cattle.io.registration.js +3 -0
  285. package/models/provisioning.cattle.io.cluster.js +29 -33
  286. package/models/secret.js +157 -2
  287. package/models/service.js +4 -0
  288. package/models/workload.js +5 -0
  289. package/package.json +2 -2
  290. package/pages/about.vue +4 -58
  291. package/pages/auth/login.vue +1 -1
  292. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +0 -1
  293. package/pages/c/_cluster/apps/charts/index.vue +296 -81
  294. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  295. package/pages/c/_cluster/explorer/index.vue +3 -3
  296. package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
  297. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  298. package/pages/c/_cluster/fleet/application/create.vue +3 -2
  299. package/pages/c/_cluster/fleet/index.vue +94 -57
  300. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  301. package/pages/c/_cluster/longhorn/index.vue +5 -2
  302. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  303. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  304. package/pages/explorer/resource/detail/configmap.vue +30 -7
  305. package/pages/explorer/resource/detail/projectsecret.vue +9 -0
  306. package/pages/explorer/resource/detail/secret.vue +63 -0
  307. package/pages/home.vue +9 -55
  308. package/pages/support/index.vue +4 -6
  309. package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
  310. package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
  311. package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
  312. package/plugins/dashboard-store/actions.js +19 -5
  313. package/plugins/dashboard-store/getters.js +4 -0
  314. package/plugins/dashboard-store/normalize.js +29 -17
  315. package/plugins/dashboard-store/resource-class.js +68 -19
  316. package/plugins/steve/steve-pagination-utils.ts +38 -19
  317. package/plugins/steve/subscribe.js +6 -1
  318. package/rancher-components/Banner/Banner.vue +13 -0
  319. package/rancher-components/Form/Checkbox/Checkbox.vue +9 -4
  320. package/rancher-components/Form/LabeledInput/LabeledInput.vue +1 -1
  321. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  322. package/rancher-components/RcItemCard/RcItemCard.vue +8 -3
  323. package/store/auth.js +2 -0
  324. package/store/catalog.js +23 -1
  325. package/store/growl.js +97 -8
  326. package/store/index.js +6 -0
  327. package/store/notifications.ts +426 -0
  328. package/store/prefs.js +0 -1
  329. package/store/type-map.js +19 -16
  330. package/store/uiplugins.ts +15 -1
  331. package/types/fleet.d.ts +24 -0
  332. package/types/kube/kube-api.ts +12 -0
  333. package/types/notifications/index.ts +74 -0
  334. package/types/shell/index.d.ts +661 -589
  335. package/types/store/dashboard-store.types.ts +16 -0
  336. package/types/store/pagination.types.ts +16 -6
  337. package/utils/__tests__/create-yaml.test.ts +235 -0
  338. package/utils/__tests__/fleet.test.ts +148 -0
  339. package/utils/__tests__/object.test.ts +54 -1
  340. package/utils/__tests__/string.test.ts +273 -1
  341. package/utils/__tests__/time.test.ts +31 -0
  342. package/utils/auth.js +9 -2
  343. package/utils/create-yaml.js +103 -9
  344. package/utils/crypto/encryption.ts +103 -0
  345. package/utils/cspAdaptor.ts +51 -0
  346. package/utils/fleet.ts +54 -65
  347. package/utils/object.js +36 -0
  348. package/utils/pagination-utils.ts +19 -1
  349. package/utils/release-notes.ts +48 -0
  350. package/utils/selector-typed.ts +7 -2
  351. package/utils/string.js +24 -0
  352. package/utils/{time.js → time.ts} +25 -6
  353. package/utils/uiplugins.ts +22 -0
  354. package/utils/validators/formRules/index.ts +3 -0
  355. package/components/Resource/Detail/TitleBar/composable.ts +0 -31
  356. package/config/product/legacy.js +0 -62
  357. package/models/etcdbackup.js +0 -45
  358. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  359. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  360. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  361. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
@@ -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')"
@@ -269,6 +269,7 @@ export default {
269
269
  </div>
270
270
  <Tabbed
271
271
  :side-tabs="true"
272
+ :use-hash="useTabbedHash"
272
273
  @changed="onTabChanged"
273
274
  >
274
275
  <Tab