@rancher/shell 3.0.5-rc.3 → 3.0.5-rc.6

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 (424) hide show
  1. package/assets/data/aws-regions.json +1 -0
  2. package/assets/images/icons/document.svg +3 -0
  3. package/assets/images/key.svg +17 -0
  4. package/assets/images/vendor/cognito.svg +1 -0
  5. package/assets/styles/app.scss +1 -0
  6. package/assets/styles/base/_basic.scss +10 -0
  7. package/assets/styles/base/_spacing.scss +29 -0
  8. package/assets/styles/global/_form.scss +1 -1
  9. package/assets/styles/global/_labeled-input.scss +1 -1
  10. package/assets/styles/global/_layout.scss +1 -1
  11. package/assets/styles/themes/_dark.scss +28 -0
  12. package/assets/styles/themes/_light.scss +68 -0
  13. package/assets/styles/vendor/vue-select.scss +1 -1
  14. package/assets/translations/en-us.yaml +721 -83
  15. package/assets/translations/zh-hans.yaml +11 -9
  16. package/cloud-credential/gcp.vue +9 -1
  17. package/components/AppModal.vue +2 -0
  18. package/components/Certificates.vue +5 -0
  19. package/components/CodeMirror.vue +1 -1
  20. package/components/ConfigMapSettings/Settings.vue +377 -0
  21. package/components/ConfigMapSettings/index.vue +354 -0
  22. package/components/CruResource.vue +1 -2
  23. package/components/DetailText.vue +61 -11
  24. package/components/Drawer/Chrome.vue +116 -0
  25. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  26. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  27. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  28. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  29. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +82 -0
  30. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  31. package/components/Drawer/ResourceDetailDrawer/composables.ts +50 -0
  32. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  33. package/components/Drawer/ResourceDetailDrawer/index.vue +110 -0
  34. package/components/FilterPanel.vue +156 -0
  35. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  36. package/components/GrowlManager.vue +16 -15
  37. package/components/IconOrSvg.vue +19 -35
  38. package/components/KeyValueView.vue +1 -1
  39. package/components/LocaleSelector.vue +9 -1
  40. package/components/ProgressBarMulti.vue +1 -0
  41. package/components/PromptModal.vue +6 -1
  42. package/components/PromptRemove.vue +5 -1
  43. package/components/RelatedResources.vue +4 -12
  44. package/components/Resource/Detail/Additional.vue +46 -0
  45. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  46. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  47. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  48. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  49. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  50. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  51. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  52. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  53. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  54. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  55. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  56. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  57. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  58. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  59. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  60. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  61. package/components/Resource/Detail/Card/index.vue +56 -0
  62. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  63. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  64. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  65. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  66. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  67. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +64 -0
  68. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +298 -0
  69. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +133 -0
  70. package/components/Resource/Detail/Metadata/KeyValue.vue +138 -0
  71. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  72. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  73. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  74. package/components/Resource/Detail/Metadata/Rectangle.vue +32 -0
  75. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  76. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  77. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  78. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  79. package/components/Resource/Detail/Metadata/composables.ts +78 -0
  80. package/components/Resource/Detail/Metadata/index.vue +73 -0
  81. package/components/Resource/Detail/Page.vue +37 -0
  82. package/components/Resource/Detail/PercentageBar.vue +40 -0
  83. package/components/Resource/Detail/ResourceRow.vue +138 -0
  84. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  85. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  86. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  87. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  88. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  89. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  90. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  91. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  92. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  93. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  94. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  95. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  96. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  97. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  98. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  99. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  100. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  101. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  102. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  103. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  104. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  105. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  106. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  107. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  108. package/components/Resource/Detail/SpacedRow.vue +14 -0
  109. package/components/Resource/Detail/StatusBar.vue +59 -0
  110. package/components/Resource/Detail/StatusRow.vue +61 -0
  111. package/components/Resource/Detail/TitleBar/Title.vue +14 -0
  112. package/components/Resource/Detail/TitleBar/Top.vue +14 -0
  113. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  114. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  115. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  116. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  117. package/components/Resource/Detail/TitleBar/composables.ts +44 -0
  118. package/components/Resource/Detail/TitleBar/index.vue +196 -0
  119. package/components/Resource/Detail/Top/index.vue +34 -0
  120. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  121. package/components/Resource/Detail/composables.ts +45 -0
  122. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  123. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  124. package/components/ResourceDetail/Masthead/index.vue +65 -0
  125. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  126. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  127. package/components/ResourceDetail/index.vue +73 -557
  128. package/components/ResourceDetail/legacy.vue +562 -0
  129. package/components/ResourceList/Masthead.vue +6 -0
  130. package/components/ResourceTable.vue +41 -7
  131. package/components/ResourceYaml.vue +14 -1
  132. package/components/SlideInPanelManager.vue +117 -10
  133. package/components/SortableTable/index.vue +13 -2
  134. package/components/SortableTable/selection.js +21 -8
  135. package/components/StateDot/index.vue +28 -0
  136. package/components/StatusBadge.vue +6 -4
  137. package/components/SubtleLink.vue +25 -0
  138. package/components/Tabbed/index.vue +11 -15
  139. package/components/Wizard.vue +16 -3
  140. package/components/YamlEditor.vue +1 -1
  141. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  142. package/components/__tests__/FilterPanel.test.ts +81 -0
  143. package/components/__tests__/GrowlManager.test.ts +0 -25
  144. package/components/auth/AuthBanner.vue +2 -3
  145. package/components/auth/RoleDetailEdit.vue +45 -3
  146. package/components/auth/login/ldap.vue +1 -1
  147. package/components/auth/login/oidc.vue +6 -1
  148. package/components/fleet/FleetApplications.vue +174 -0
  149. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  150. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  151. package/components/fleet/FleetClusters.vue +25 -6
  152. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  153. package/components/fleet/FleetHelmOps.vue +123 -0
  154. package/components/fleet/FleetIntro.vue +58 -28
  155. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  156. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  157. package/components/fleet/FleetRepos.vue +37 -80
  158. package/components/fleet/FleetResources.vue +53 -26
  159. package/components/fleet/FleetSummary.vue +26 -51
  160. package/components/fleet/FleetValuesFrom.vue +295 -0
  161. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  162. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  163. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  164. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  165. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  166. package/components/fleet/dashboard/Empty.vue +73 -0
  167. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  168. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  169. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  170. package/components/fleet/dashboard/ResourcePanel.vue +383 -0
  171. package/components/form/ArrayList.vue +19 -2
  172. package/components/form/ChangePassword.vue +3 -1
  173. package/components/form/Footer.vue +10 -4
  174. package/components/form/KeyValue.vue +81 -43
  175. package/components/form/LabeledSelect.vue +56 -16
  176. package/components/form/Labels.vue +90 -17
  177. package/components/form/MatchExpressions.vue +46 -5
  178. package/components/form/NameNsDescription.vue +1 -1
  179. package/components/form/ResourceSelector.vue +1 -0
  180. package/components/form/ResourceTabs/index.vue +5 -0
  181. package/components/form/SecretSelector.vue +9 -2
  182. package/components/form/Select.vue +57 -19
  183. package/components/form/SimpleSecretSelector.vue +17 -4
  184. package/components/form/Taints.vue +21 -2
  185. package/components/form/UnitInput.vue +8 -0
  186. package/components/form/ValueFromResource.vue +31 -19
  187. package/components/form/__tests__/LabeledSelect.test.ts +8 -4
  188. package/components/form/__tests__/Labels.test.ts +360 -0
  189. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  190. package/components/form/__tests__/Select.test.ts +5 -2
  191. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  192. package/components/formatter/FleetApplicationSource.vue +71 -0
  193. package/components/formatter/FleetSummaryGraph.vue +7 -0
  194. package/components/formatter/WorkloadHealthScale.vue +1 -1
  195. package/components/google/AccountAccess.vue +211 -0
  196. package/components/google/types/gcp.d.ts +136 -0
  197. package/components/google/types/index.d.ts +101 -0
  198. package/components/google/util/__mocks__/gcp.ts +465 -0
  199. package/components/google/util/formatter.ts +82 -0
  200. package/components/google/util/gcp.ts +134 -0
  201. package/components/google/util/index.d.ts +11 -0
  202. package/components/nav/Favorite.vue +1 -1
  203. package/components/nav/Group.vue +70 -47
  204. package/components/nav/Header.vue +13 -8
  205. package/components/nav/NamespaceFilter.vue +13 -1
  206. package/components/nav/NotificationCenter/Notification.vue +510 -0
  207. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  208. package/components/nav/NotificationCenter/index.vue +148 -0
  209. package/components/nav/TopLevelMenu.helper.ts +55 -34
  210. package/components/nav/TopLevelMenu.vue +11 -0
  211. package/components/nav/Type.vue +4 -1
  212. package/composables/drawer.ts +26 -0
  213. package/composables/resources.test.ts +63 -0
  214. package/composables/resources.ts +38 -0
  215. package/composables/useI18n.ts +12 -11
  216. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  217. package/config/labels-annotations.js +20 -11
  218. package/config/product/auth.js +17 -1
  219. package/config/product/{cis.js → compliance.js} +23 -26
  220. package/config/product/explorer.js +5 -1
  221. package/config/product/fleet.js +77 -17
  222. package/config/product/settings.js +22 -11
  223. package/config/query-params.js +6 -1
  224. package/config/roles.ts +2 -1
  225. package/config/router/navigation-guards/authentication.js +51 -2
  226. package/config/router/routes.js +45 -31
  227. package/config/secret.ts +15 -0
  228. package/config/settings.ts +24 -5
  229. package/config/store.js +2 -0
  230. package/config/system-namespaces.js +1 -1
  231. package/config/table-headers.js +53 -23
  232. package/config/types.js +17 -6
  233. package/core/plugin-helpers.ts +3 -2
  234. package/core/plugin.ts +32 -7
  235. package/core/types.ts +18 -1
  236. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  237. package/detail/fleet.cattle.io.cluster.vue +28 -15
  238. package/detail/fleet.cattle.io.gitrepo.vue +10 -1
  239. package/detail/fleet.cattle.io.helmop.vue +157 -0
  240. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  241. package/detail/management.cattle.io.oidcclient.vue +369 -0
  242. package/detail/node.vue +2 -2
  243. package/detail/pod.vue +2 -2
  244. package/detail/service.vue +10 -1
  245. package/detail/workload/index.vue +8 -2
  246. package/dialog/ExtensionCatalogUninstallDialog.vue +7 -4
  247. package/dialog/GenericPrompt.vue +1 -1
  248. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  249. package/dialog/ImportDialog.vue +8 -8
  250. package/dialog/OidcClientSecretDialog.vue +117 -0
  251. package/dialog/RedeployWorkloadDialog.vue +164 -0
  252. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  253. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  254. package/edit/auth/oidc.vue +159 -93
  255. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  256. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  257. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  258. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  259. package/edit/configmap.vue +4 -1
  260. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  261. package/edit/fleet.cattle.io.gitrepo.vue +70 -255
  262. package/edit/fleet.cattle.io.helmop.vue +772 -0
  263. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  264. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  265. package/edit/logging-flow/index.vue +1 -0
  266. package/edit/logging.banzaicloud.io.output/index.vue +1 -0
  267. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  268. package/edit/management.cattle.io.oidcclient.vue +162 -0
  269. package/edit/management.cattle.io.project.vue +4 -1
  270. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  271. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  272. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  273. package/edit/monitoring.coreos.com.receiver/auth.vue +30 -30
  274. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  275. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  276. package/edit/monitoring.coreos.com.route.vue +1 -0
  277. package/edit/namespace.vue +1 -0
  278. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  279. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  280. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +7 -2
  281. package/edit/networking.k8s.io.networkpolicy/index.vue +6 -2
  282. package/edit/node.vue +1 -0
  283. package/edit/persistentvolume/index.vue +4 -1
  284. package/edit/provisioning.cattle.io.cluster/rke2.vue +418 -382
  285. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +27 -27
  286. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  287. package/edit/resources.cattle.io.restore.vue +1 -1
  288. package/edit/secret/index.vue +1 -0
  289. package/edit/service.vue +4 -1
  290. package/edit/serviceaccount.vue +4 -1
  291. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  292. package/edit/workload/index.vue +5 -0
  293. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  294. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  295. package/list/fleet.cattle.io.helmop.vue +108 -0
  296. package/list/management.cattle.io.oidcclient.vue +108 -0
  297. package/list/namespace.vue +5 -2
  298. package/list/node.vue +2 -0
  299. package/machine-config/amazonec2.vue +3 -24
  300. package/machine-config/components/GCEImage.vue +374 -0
  301. package/machine-config/google.vue +617 -0
  302. package/mixins/__tests__/brand.spec.ts +170 -0
  303. package/mixins/auth-config.js +8 -1
  304. package/mixins/brand.js +16 -17
  305. package/mixins/create-edit-view/index.js +5 -0
  306. package/mixins/preset.js +100 -0
  307. package/mixins/resource-fetch-api-pagination.js +18 -0
  308. package/mixins/resource-fetch.js +1 -1
  309. package/mixins/resource-table-watch.js +45 -0
  310. package/mixins/vue-select-overrides.js +1 -0
  311. package/models/__tests__/chart.test.ts +273 -0
  312. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  313. package/models/chart.js +144 -2
  314. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  315. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  316. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  317. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  318. package/models/fleet-application.js +314 -0
  319. package/models/fleet.cattle.io.bundle.js +9 -8
  320. package/models/fleet.cattle.io.cluster.js +11 -0
  321. package/models/fleet.cattle.io.gitrepo.js +41 -365
  322. package/models/fleet.cattle.io.helmop.js +198 -0
  323. package/models/management.cattle.io.authconfig.js +1 -0
  324. package/models/management.cattle.io.fleetworkspace.js +14 -1
  325. package/models/management.cattle.io.oidcclient.js +18 -0
  326. package/models/management.cattle.io.registration.js +3 -0
  327. package/models/provisioning.cattle.io.cluster.js +5 -5
  328. package/models/service.js +4 -0
  329. package/models/workload.js +19 -18
  330. package/package.json +2 -1
  331. package/pages/about.vue +4 -58
  332. package/pages/auth/login.vue +1 -1
  333. package/pages/auth/verify.vue +13 -1
  334. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  335. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  336. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +54 -0
  337. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  338. package/pages/c/_cluster/apps/charts/index.vue +487 -465
  339. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  340. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  341. package/pages/c/_cluster/explorer/index.vue +3 -3
  342. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  343. package/pages/c/_cluster/fleet/__tests__/index.test.ts +426 -0
  344. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  345. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  346. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  347. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  348. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  349. package/pages/c/_cluster/fleet/index.vue +809 -329
  350. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  351. package/pages/c/_cluster/longhorn/index.vue +5 -2
  352. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  353. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  354. package/pages/explorer/resource/detail/configmap.vue +42 -0
  355. package/pages/explorer/resource/detail/secret.vue +50 -0
  356. package/pages/home.vue +9 -55
  357. package/pages/support/index.vue +4 -6
  358. package/plugins/dashboard-store/actions.js +50 -14
  359. package/plugins/dashboard-store/getters.js +38 -21
  360. package/plugins/dashboard-store/mutations.js +51 -7
  361. package/plugins/dashboard-store/resource-class.js +30 -4
  362. package/plugins/steve/__tests__/subscribe.spec.ts +66 -1
  363. package/plugins/steve/actions.js +3 -0
  364. package/plugins/steve/steve-pagination-utils.ts +17 -8
  365. package/plugins/steve/subscribe.js +235 -43
  366. package/rancher-components/BadgeState/BadgeState.vue +3 -1
  367. package/rancher-components/Banner/Banner.vue +13 -0
  368. package/rancher-components/Form/Checkbox/Checkbox.vue +11 -6
  369. package/rancher-components/Form/LabeledInput/LabeledInput.vue +1 -1
  370. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  371. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  372. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  373. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  374. package/rancher-components/RcItemCard/index.ts +2 -0
  375. package/store/auth.js +3 -0
  376. package/store/catalog.js +85 -25
  377. package/store/growl.js +97 -8
  378. package/store/index.js +39 -14
  379. package/store/notifications.ts +426 -0
  380. package/store/prefs.js +0 -1
  381. package/store/slideInPanel.ts +6 -0
  382. package/store/type-map.js +19 -15
  383. package/store/uiplugins.ts +15 -1
  384. package/types/fleet.d.ts +59 -0
  385. package/types/notifications/index.ts +74 -0
  386. package/types/resources/settings.d.ts +19 -1
  387. package/types/shell/index.d.ts +388 -307
  388. package/types/store/dashboard-store.types.ts +33 -3
  389. package/types/store/pagination.types.ts +6 -1
  390. package/types/store/subscribe.types.ts +50 -0
  391. package/utils/__tests__/fleet.test.ts +148 -0
  392. package/utils/__tests__/object.test.ts +54 -1
  393. package/utils/__tests__/string.test.ts +273 -1
  394. package/utils/__tests__/time.test.ts +31 -0
  395. package/utils/auth.js +41 -5
  396. package/utils/crypto/encryption.ts +103 -0
  397. package/utils/cspAdaptor.ts +51 -0
  398. package/utils/fleet-types.ts +0 -0
  399. package/utils/fleet.ts +190 -2
  400. package/utils/object.js +36 -0
  401. package/utils/pagination-utils.ts +27 -2
  402. package/utils/pagination-wrapper.ts +132 -50
  403. package/utils/release-notes.ts +48 -0
  404. package/utils/selector-typed.ts +7 -2
  405. package/utils/settings.ts +4 -1
  406. package/utils/string.js +24 -0
  407. package/utils/style.ts +39 -0
  408. package/utils/{time.js → time.ts} +25 -6
  409. package/utils/uiplugins.ts +22 -0
  410. package/utils/validators/formRules/__tests__/index.test.ts +36 -3
  411. package/utils/validators/formRules/index.ts +13 -3
  412. package/utils/window.js +11 -7
  413. package/components/__tests__/ApplicationCard.test.ts +0 -27
  414. package/components/cards/ApplicationCard.vue +0 -145
  415. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  416. package/config/product/legacy.js +0 -62
  417. package/config/secret.js +0 -14
  418. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  419. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  420. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  421. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  422. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
  423. /package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +0 -0
  424. /package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +0 -0
@@ -0,0 +1,273 @@
1
+ import Chart from '@shell/models/chart';
2
+ import { APP_UPGRADE_STATUS } from '@shell/store/catalog';
3
+ import { CATALOG as CATALOG_ANNOTATIONS } from '@shell/config/labels-annotations';
4
+
5
+ const base = {
6
+ chartName: 'my-app',
7
+ repoName: 'my-repo',
8
+ repoNameDisplay: 'My Repo',
9
+ versions: [
10
+ {
11
+ version: '1.3.0', home: 'https://example.com', created: '2024-03-10T12:00:00Z'
12
+ },
13
+ { version: '1.2.3', home: 'https://example.com' }
14
+ ],
15
+ categories: [],
16
+ tags: [],
17
+ deprecated: false
18
+ };
19
+
20
+ function makeInstalledApp(upgradeAvailable = APP_UPGRADE_STATUS.NO_UPGRADE) {
21
+ return {
22
+ spec: {
23
+ chart: {
24
+ metadata: {
25
+ name: 'my-app',
26
+ version: '1.3.0',
27
+ home: 'https://example.com',
28
+ annotations: { [CATALOG_ANNOTATIONS.SOURCE_REPO_NAME]: 'my-repo' }
29
+ }
30
+ }
31
+ },
32
+ upgradeAvailable
33
+ };
34
+ }
35
+
36
+ describe('class Chart', () => {
37
+ describe('matchingInstalledApps', () => {
38
+ it('matches by name, repo, and home in latest version', () => {
39
+ const installedApp = makeInstalledApp();
40
+
41
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
42
+
43
+ expect(chart.matchingInstalledApps).toHaveLength(1);
44
+ });
45
+
46
+ it('does not match if name is different', () => {
47
+ const installedApp = makeInstalledApp();
48
+
49
+ installedApp.spec.chart.metadata.name = 'different-app';
50
+
51
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
52
+
53
+ expect(chart.matchingInstalledApps).toHaveLength(0);
54
+ });
55
+
56
+ it('does not match if repo is different', () => {
57
+ const installedApp = makeInstalledApp();
58
+
59
+ installedApp.spec.chart.metadata.annotations[CATALOG_ANNOTATIONS.SOURCE_REPO_NAME] = 'different-repo';
60
+
61
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
62
+
63
+ expect(chart.matchingInstalledApps).toHaveLength(0);
64
+ });
65
+
66
+ it('matches by version+home when not latest', () => {
67
+ const installedApp = makeInstalledApp();
68
+
69
+ installedApp.spec.chart.metadata.version = '1.2.3'; // not the latest in base
70
+
71
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
72
+
73
+ expect(chart.matchingInstalledApps).toHaveLength(1);
74
+ });
75
+
76
+ it('can use fallback repo from metadata labels', () => {
77
+ const installedApp = makeInstalledApp();
78
+
79
+ installedApp.spec.chart.metadata.annotations = {}; // remove SOURCE_REPO_NAME
80
+ installedApp.metadata = { labels: { [CATALOG_ANNOTATIONS.CLUSTER_REPO_NAME]: 'my-repo' } };
81
+
82
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
83
+
84
+ expect(chart.matchingInstalledApps).toHaveLength(1);
85
+ });
86
+ });
87
+
88
+ describe('isInstalled', () => {
89
+ it('is true when one app matches', () => {
90
+ const installedApp = {
91
+ spec: {
92
+ chart: {
93
+ metadata: {
94
+ name: 'my-app',
95
+ version: '1.2.3',
96
+ home: 'https://example.com',
97
+ annotations: { [CATALOG_ANNOTATIONS.SOURCE_REPO_NAME]: 'my-repo' }
98
+ }
99
+ }
100
+ }
101
+ };
102
+
103
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
104
+
105
+ expect(chart.isInstalled).toBe(true);
106
+ });
107
+
108
+ it('is false when no apps match', () => {
109
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [] } });
110
+
111
+ expect(chart.isInstalled).toBe(false);
112
+ });
113
+
114
+ it('is false when multiple apps match', () => {
115
+ const appTemplate = {
116
+ spec: {
117
+ chart: {
118
+ metadata: {
119
+ name: 'my-app',
120
+ version: '1.2.3',
121
+ home: 'https://example.com',
122
+ annotations: { [CATALOG_ANNOTATIONS.SOURCE_REPO_NAME]: 'my-repo' }
123
+ }
124
+ }
125
+ }
126
+ };
127
+
128
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [appTemplate, appTemplate] } });
129
+
130
+ expect(chart.isInstalled).toBe(false);
131
+ });
132
+ });
133
+
134
+ describe('upgradeable', () => {
135
+ it('is true when installed and upgradeAvailable is SINGLE_UPGRADE', () => {
136
+ const installedApp = {
137
+ spec: {
138
+ chart: {
139
+ metadata: {
140
+ name: 'my-app',
141
+ version: '1.2.3',
142
+ home: 'https://example.com',
143
+ annotations: { [CATALOG_ANNOTATIONS.SOURCE_REPO_NAME]: 'my-repo' }
144
+ }
145
+ }
146
+ },
147
+ upgradeAvailable: APP_UPGRADE_STATUS.SINGLE_UPGRADE
148
+ };
149
+
150
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
151
+
152
+ expect(chart.upgradeable).toBe(true);
153
+ });
154
+
155
+ it('is false if upgradeAvailable is different', () => {
156
+ const installedApp = {
157
+ spec: {
158
+ chart: {
159
+ metadata: {
160
+ name: 'my-app',
161
+ version: '1.2.3',
162
+ home: 'https://example.com',
163
+ annotations: { [CATALOG_ANNOTATIONS.SOURCE_REPO_NAME]: 'my-repo' }
164
+ }
165
+ }
166
+ },
167
+ upgradeAvailable: APP_UPGRADE_STATUS.NO_UPGRADE
168
+ };
169
+
170
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
171
+
172
+ expect(chart.upgradeable).toBe(false);
173
+ });
174
+
175
+ it('is false when not installed', () => {
176
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [] } });
177
+
178
+ expect(chart.upgradeable).toBe(false);
179
+ });
180
+ });
181
+
182
+ describe('cardContent', () => {
183
+ it('includes correct subHeader and footer info', () => {
184
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [] } });
185
+
186
+ const result = chart.cardContent;
187
+
188
+ expect(result.subHeaderItems).toHaveLength(2);
189
+ expect(result.subHeaderItems[0].label).toBe('1.3.0');
190
+ expect(result.subHeaderItems[1].label).toBe('Mar 10, 2024');
191
+
192
+ expect(result.footerItems).toHaveLength(1);
193
+ expect(result.footerItems[0].labels).toContain('My Repo');
194
+
195
+ expect(result.statuses).toHaveLength(0);
196
+ });
197
+
198
+ it('includes category and tag items when present', () => {
199
+ const chart = new Chart({
200
+ ...base,
201
+ categories: ['database'],
202
+ tags: ['linux', 'experimentl']
203
+ }, { rootGetters: { 'cluster/all': () => [] } });
204
+
205
+ const result = chart.cardContent;
206
+
207
+ expect(result.footerItems).toHaveLength(3);
208
+
209
+ const categoryItem = result.footerItems.find((i) => i.icon === 'icon-category-alt');
210
+
211
+ expect(categoryItem).toBeDefined();
212
+ expect(categoryItem.labels).toContain('database');
213
+
214
+ const tagItem = result.footerItems.find((i) => i.icon === 'icon-tag-alt');
215
+
216
+ expect(tagItem).toBeDefined();
217
+ expect(tagItem.labels).toStrictEqual(expect.arrayContaining(['linux', 'experimentl']));
218
+ });
219
+
220
+ it('includes deprecated status when deprecated is true', () => {
221
+ const chart = new Chart({ ...base, deprecated: true }, { rootGetters: { 'cluster/all': () => [] } });
222
+
223
+ const result = chart.cardContent;
224
+
225
+ const deprecatedStatus = result.statuses.find((s) => s.tooltip.key === 'generic.deprecated');
226
+
227
+ expect(deprecatedStatus).toBeDefined();
228
+ expect(deprecatedStatus.color).toBe('error');
229
+ });
230
+
231
+ it('includes installed status when app is installed', () => {
232
+ const installedApp = makeInstalledApp();
233
+
234
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
235
+
236
+ const result = chart.cardContent;
237
+
238
+ const installedStatus = result.statuses.find((s) => s.tooltip.key === 'generic.installed');
239
+
240
+ expect(installedStatus).toBeDefined();
241
+ expect(installedStatus.color).toBe('success');
242
+ });
243
+
244
+ it('includes upgradeable status when upgrade is available', () => {
245
+ const installedApp = makeInstalledApp(APP_UPGRADE_STATUS.SINGLE_UPGRADE);
246
+
247
+ const chart = new Chart(base, { rootGetters: { 'cluster/all': () => [installedApp] } });
248
+
249
+ const result = chart.cardContent;
250
+
251
+ const upgradeableStatus = result.statuses.find((s) => s.tooltip.key === 'generic.upgradeable');
252
+
253
+ expect(upgradeableStatus).toBeDefined();
254
+ expect(upgradeableStatus.color).toBe('info');
255
+ });
256
+
257
+ it('shows all statuses together when all conditions are met', () => {
258
+ const installedApp = makeInstalledApp(APP_UPGRADE_STATUS.SINGLE_UPGRADE);
259
+
260
+ const chart = new Chart({ ...base, deprecated: true }, { rootGetters: { 'cluster/all': () => [installedApp] } });
261
+
262
+ const result = chart.cardContent;
263
+
264
+ const keys = result.statuses.map((s) => s.tooltip.key);
265
+
266
+ expect(keys).toStrictEqual(expect.arrayContaining([
267
+ 'generic.deprecated',
268
+ 'generic.upgradeable',
269
+ 'generic.installed'
270
+ ]));
271
+ });
272
+ });
273
+ });
@@ -127,7 +127,7 @@ describe('class GitRepo', () => {
127
127
  describe('resourcesStatuses', () => {
128
128
  it.each([
129
129
  []
130
- ])('foobat', () => {
130
+ ])('fn', () => {
131
131
  jest.spyOn(GitRepo.prototype, '$getters', 'get').mockReturnValue({ byId: jest.fn() });
132
132
 
133
133
  jest.spyOn(GitRepo.prototype, 'targetClusters', 'get').mockReturnValue([{
package/models/chart.js CHANGED
@@ -1,9 +1,12 @@
1
- import { compatibleVersionsFor } from '@shell/store/catalog';
1
+ import { compatibleVersionsFor, APP_UPGRADE_STATUS } from '@shell/store/catalog';
2
2
  import {
3
- REPO_TYPE, REPO, CHART, VERSION, _FLAGGED, HIDE_SIDE_NAV
3
+ REPO_TYPE, REPO, CHART, VERSION, _FLAGGED, HIDE_SIDE_NAV, CATEGORY, TAG
4
4
  } from '@shell/config/query-params';
5
5
  import { BLANK_CLUSTER } from '@shell/store/store-types.js';
6
6
  import SteveModel from '@shell/plugins/steve/steve-class';
7
+ import { CATALOG } from '@shell/config/types';
8
+ import { CATALOG as CATALOG_ANNOTATIONS } from '@shell/config/labels-annotations';
9
+ import day from 'dayjs';
7
10
 
8
11
  export default class Chart extends SteveModel {
9
12
  queryParams(from, hideSideNav) {
@@ -47,4 +50,143 @@ export default class Chart extends SteveModel {
47
50
  query,
48
51
  });
49
52
  }
53
+
54
+ /**
55
+ * Returns the list of installed apps that match this chart by:
56
+ * - chart name
57
+ * - repository name
58
+ * - and either:
59
+ * - the home URL matches the latest version’s home URL
60
+ * - or version + home URL match any other known version
61
+ *
62
+ * Inverse logic of `matchingCharts` in `catalog.cattle.io.app.js`.
63
+ *
64
+ * @returns {Array<Object>} List of matching installed app objects.
65
+ */
66
+ get matchingInstalledApps() {
67
+ const latestVersion = this.versions?.[0] || [];
68
+ const appHome = latestVersion?.home;
69
+ const installedApps = this.$rootGetters['cluster/all'](CATALOG.APP);
70
+
71
+ return installedApps.filter((installedApp) => {
72
+ const metadata = installedApp?.spec?.chart?.metadata;
73
+ const name = metadata?.name;
74
+ const version = metadata?.version;
75
+ const home = metadata?.home;
76
+
77
+ const repoName = metadata?.annotations?.[CATALOG_ANNOTATIONS.SOURCE_REPO_NAME] ||
78
+ installedApp?.metadata?.labels?.[CATALOG_ANNOTATIONS.CLUSTER_REPO_NAME];
79
+
80
+ // name and repo should match
81
+ if (name !== this.chartName || !repoName || repoName !== this.repoName) {
82
+ return false;
83
+ }
84
+
85
+ // match by comparing home URL in the latest version vs home URL from the installed app
86
+ if (appHome && home === appHome) {
87
+ return true;
88
+ }
89
+
90
+ // match by version + home for the rest
91
+ return this.versions?.some((v) => v.version === version && home === appHome);
92
+ });
93
+ }
94
+
95
+ /**
96
+ * Determines if the chart is installed by checking if exactly one matching installed app is found.
97
+ *
98
+ * @returns {boolean} `true` if the chart is currently installed.
99
+ */
100
+ get isInstalled() {
101
+ return this.matchingInstalledApps.length === 1;
102
+ }
103
+
104
+ /**
105
+ * Determines if the installed app has a single available upgrade.
106
+ * Requires the chart to be installed.
107
+ *
108
+ * @returns {boolean} `true` if the app is installed and has a single upgrade available.
109
+ */
110
+ get upgradeable() {
111
+ return this.isInstalled && this.matchingInstalledApps[0].upgradeAvailable === APP_UPGRADE_STATUS.SINGLE_UPGRADE;
112
+ }
113
+
114
+ /**
115
+ * Builds structured metadata for display in RcItemCard.vue:
116
+ * - Sub-header (version and last updated)
117
+ * - Footer (repository, categories, tags)
118
+ * - Status indicators (e.g. deprecated, upgradeable, installed)
119
+ *
120
+ * @returns {Object} Card content object with `subHeaderItems`, `footerItems`, and `statuses` arrays.
121
+ */
122
+ get cardContent() {
123
+ if (!this._cardContent) {
124
+ const subHeaderItems = [
125
+ {
126
+ icon: 'icon-version-alt',
127
+ iconTooltip: { key: 'tableHeaders.version' },
128
+ label: this.versions[0].version
129
+ },
130
+ {
131
+ icon: 'icon-refresh-alt',
132
+ iconTooltip: { key: 'tableHeaders.lastUpdated' },
133
+ label: day(this.versions[0].created).format('MMM D, YYYY')
134
+ }
135
+ ];
136
+ const footerItems = [
137
+ {
138
+ type: REPO,
139
+ icon: 'icon-repository-alt',
140
+ iconTooltip: { key: 'tableHeaders.repoName' },
141
+ labels: [this.repoNameDisplay]
142
+ }
143
+ ];
144
+
145
+ if (this.categories.length) {
146
+ footerItems.push( {
147
+ type: CATEGORY,
148
+ icon: 'icon-category-alt',
149
+ iconTooltip: { key: 'generic.category' },
150
+ labels: this.categories
151
+ });
152
+ }
153
+
154
+ if (this.tags.length) {
155
+ footerItems.push({
156
+ type: TAG,
157
+ icon: 'icon-tag-alt',
158
+ iconTooltip: { key: 'generic.tags' },
159
+ labels: this.tags
160
+ });
161
+ }
162
+
163
+ const statuses = [];
164
+
165
+ if (this.deprecated) {
166
+ statuses.push({
167
+ icon: 'icon-alert-alt', color: 'error', tooltip: { key: 'generic.deprecated' }
168
+ });
169
+ }
170
+
171
+ if (this.upgradeable) {
172
+ statuses.push({
173
+ icon: 'icon-upgrade-alt', color: 'info', tooltip: { key: 'generic.upgradeable' }
174
+ });
175
+ }
176
+
177
+ if (this.isInstalled) {
178
+ statuses.push({
179
+ icon: 'icon-confirmation-alt', color: 'success', tooltip: { key: 'generic.installed' }
180
+ });
181
+ }
182
+
183
+ this._cardContent = {
184
+ subHeaderItems,
185
+ footerItems,
186
+ statuses
187
+ };
188
+ }
189
+
190
+ return this._cardContent;
191
+ }
50
192
  }
@@ -1,5 +1,5 @@
1
- import { NAME as PRODUCT_NAME } from '@shell/config/product/cis';
2
- import { CIS } from '@shell/config/types';
1
+ import { NAME as PRODUCT_NAME } from '@shell/config/product/compliance';
2
+ import { COMPLIANCE } from '@shell/config/types';
3
3
  import { findBy } from '@shell/utils/array';
4
4
  import { downloadFile, generateZip } from '@shell/utils/download';
5
5
  import { get, isEmpty } from '@shell/utils/object';
@@ -53,7 +53,7 @@ export default class ClusterScan extends SteveModel {
53
53
  action: 'downloadLatestReport',
54
54
  enabled: this.hasReport,
55
55
  icon: 'icon icon-fw icon-download',
56
- label: t('cis.downloadReport'),
56
+ label: t('compliance.downloadReport'),
57
57
  total: 1,
58
58
  };
59
59
 
@@ -61,7 +61,7 @@ export default class ClusterScan extends SteveModel {
61
61
  action: 'downloadAllReports',
62
62
  enabled: this.hasReport,
63
63
  icon: 'icon icon-fw icon-download',
64
- label: t('cis.downloadAllReports'),
64
+ label: t('compliance.downloadAllReports'),
65
65
  total: 1,
66
66
  };
67
67
 
@@ -69,7 +69,7 @@ export default class ClusterScan extends SteveModel {
69
69
  out.unshift({ divider: true });
70
70
  if (this.spec?.scheduledScanConfig?.cronSchedule) {
71
71
  out.unshift(downloadAllReports);
72
- downloadReport.label = t('cis.downloadLatestReport');
72
+ downloadReport.label = t('compliance.downloadLatestReport');
73
73
  }
74
74
  out.unshift(downloadReport);
75
75
  }
@@ -92,7 +92,7 @@ export default class ClusterScan extends SteveModel {
92
92
  get hasReports() {
93
93
  const { relationships = [] } = this.metadata;
94
94
 
95
- const reportRel = findBy(relationships, 'toType', CIS.REPORT);
95
+ const reportRel = findBy(relationships, 'toType', COMPLIANCE.REPORT);
96
96
 
97
97
  return !!reportRel;
98
98
  }
@@ -100,7 +100,7 @@ export default class ClusterScan extends SteveModel {
100
100
  async getReports() {
101
101
  const owned = await this.findOwned();
102
102
 
103
- const reports = owned.filter((obj) => obj.type === CIS.REPORT) || [];
103
+ const reports = owned.filter((obj) => obj.type === COMPLIANCE.REPORT) || [];
104
104
 
105
105
  return sortBy(reports, 'metadata.creationTimestamp', true);
106
106
  }
@@ -158,7 +158,7 @@ export default class ClusterScan extends SteveModel {
158
158
  return {
159
159
  name: 'c-cluster-product-resource-id',
160
160
  params: {
161
- resource: CIS.CLUSTER_SCAN_PROFILE,
161
+ resource: COMPLIANCE.CLUSTER_SCAN_PROFILE,
162
162
  product: PRODUCT_NAME,
163
163
  id: this.status?.lastRunScanProfileName
164
164
  }
@@ -3,7 +3,7 @@ import SteveModel from '@shell/plugins/steve/steve-class';
3
3
 
4
4
  export default class ClusterScanBenchmark extends SteveModel {
5
5
  warnDeletionMessage(toRemove = []) {
6
- return this.$rootGetters['i18n/t']('cis.deleteBenchmarkWarning', { count: toRemove.length });
6
+ return this.$rootGetters['i18n/t']('compliance.deleteBenchmarkWarning', { count: toRemove.length });
7
7
  }
8
8
 
9
9
  get isDefault() {
@@ -1,11 +1,11 @@
1
1
 
2
2
  import SteveModel from '@shell/plugins/steve/steve-class';
3
- import { NAME as PRODUCT_NAME } from '@shell/config/product/cis';
4
- import { CIS } from '@shell/config/types';
3
+ import { NAME as PRODUCT_NAME } from '@shell/config/product/compliance';
4
+ import { COMPLIANCE } from '@shell/config/types';
5
5
 
6
- export default class CISProfile extends SteveModel {
6
+ export default class ComplianceProfile extends SteveModel {
7
7
  warnDeletionMessage(toRemove = []) {
8
- return this.$rootGetters['i18n/t']('cis.deleteProfileWarning', { count: toRemove.length });
8
+ return this.$rootGetters['i18n/t']('compliance.deleteProfileWarning', { count: toRemove.length });
9
9
  }
10
10
 
11
11
  get numberTestsSkipped() {
@@ -19,7 +19,7 @@ export default class CISProfile extends SteveModel {
19
19
  return {
20
20
  name: 'c-cluster-product-resource-id',
21
21
  params: {
22
- resource: CIS.BENCHMARK,
22
+ resource: COMPLIANCE.BENCHMARK,
23
23
  product: PRODUCT_NAME,
24
24
  id: this.spec?.benchmarkVersion
25
25
  }
@@ -1,7 +1,7 @@
1
1
  import { compare } from '@shell/utils/sort';
2
2
  import SteveModel from '@shell/plugins/steve/steve-class';
3
3
 
4
- export default class CISReport extends SteveModel {
4
+ export default class ComplianceReport extends SteveModel {
5
5
  get aggregatedTests() {
6
6
  const json = this.parsedReport;
7
7
  const results = json?.results;