@rancher/shell 0.3.13 → 0.3.15

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 (396) hide show
  1. package/assets/images/providers/nutanix.svg +1 -0
  2. package/assets/translations/en-us.yaml +89 -2
  3. package/chart/gatekeeper.vue +2 -2
  4. package/chart/monitoring/alerting/index.vue +3 -3
  5. package/chart/monitoring/index.vue +2 -2
  6. package/chart/monitoring/prometheus/index.vue +1 -1
  7. package/chart/rancher-backup/index.vue +2 -2
  8. package/cloud-credential/harvester.vue +2 -2
  9. package/components/AssignTo.vue +1 -1
  10. package/components/AwsComplianceBanner.vue +1 -1
  11. package/components/BackLink.vue +7 -0
  12. package/components/BrandImage.vue +3 -3
  13. package/components/ClusterProviderIcon.vue +1 -1
  14. package/components/CommunityLinks.vue +2 -2
  15. package/components/ConsumptionGauge.vue +17 -2
  16. package/components/CruResource.vue +2 -1
  17. package/components/DashboardMetrics.vue +8 -0
  18. package/components/DetailTop.vue +1 -1
  19. package/components/ExplorerMembers.vue +8 -8
  20. package/components/ExplorerProjectsNamespaces.vue +9 -9
  21. package/components/FixedBanner.vue +1 -1
  22. package/components/GlobalRoleBindings.vue +11 -11
  23. package/components/GrafanaDashboard.vue +7 -1
  24. package/components/GrowlManager.vue +1 -1
  25. package/components/HarvesterServiceAddOnConfig.vue +117 -2
  26. package/components/IconOrSvg.vue +10 -3
  27. package/components/LandingPagePreference.vue +2 -2
  28. package/components/MoveModal.vue +1 -1
  29. package/components/PodSecurityAdmission.vue +3 -3
  30. package/components/ProgressBarMulti.vue +2 -2
  31. package/components/PromptRemove.vue +52 -28
  32. package/components/PromptRestore.vue +3 -3
  33. package/components/Questions/index.vue +5 -5
  34. package/components/RelatedWorkloadsTable.vue +1 -1
  35. package/components/ResourceList/Masthead.vue +1 -1
  36. package/components/ResourceTable.vue +3 -3
  37. package/components/ResourceYaml.vue +1 -1
  38. package/components/RoleBindings.vue +2 -2
  39. package/components/SingleClusterInfo.vue +1 -1
  40. package/components/SortableTable/actions.js +3 -3
  41. package/components/SortableTable/advanced-filtering.js +7 -7
  42. package/components/SortableTable/filtering.js +1 -1
  43. package/components/SortableTable/index.vue +9 -9
  44. package/components/SortableTable/selection.js +5 -5
  45. package/components/SortableTable/sorting.js +5 -5
  46. package/components/Tabbed/index.vue +7 -7
  47. package/components/TableSparkLine.vue +1 -1
  48. package/components/Wizard.vue +11 -23
  49. package/components/__tests__/Collapse.spec.ts +1 -1
  50. package/components/__tests__/CruResource.test.ts +74 -0
  51. package/components/__tests__/SimpleBox.spec.ts +1 -1
  52. package/components/auth/RoleDetailEdit.vue +7 -3
  53. package/components/auth/SelectPrincipal.vue +3 -3
  54. package/components/fleet/FleetResources.vue +1 -1
  55. package/components/fleet/FleetStatus.vue +4 -4
  56. package/components/fleet/FleetSummary.vue +1 -1
  57. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +1 -1
  58. package/components/fleet/ForceDirectedTreeChart/index.vue +1 -1
  59. package/components/form/ArrayList.vue +11 -3
  60. package/components/form/ArrayListSelect.vue +2 -2
  61. package/components/form/FileSelector.vue +6 -0
  62. package/components/form/GitPicker.vue +528 -0
  63. package/components/form/KeyValue.vue +82 -41
  64. package/components/form/LabeledSelect.vue +2 -2
  65. package/components/form/MatchExpressions.vue +2 -2
  66. package/components/form/Members/ClusterMembershipEditor.vue +1 -2
  67. package/components/form/Members/ClusterPermissionsEditor.vue +6 -5
  68. package/components/form/Members/MembershipEditor.vue +4 -4
  69. package/components/form/Members/ProjectMembershipEditor.vue +1 -2
  70. package/components/form/NameNsDescription.vue +13 -6
  71. package/components/form/Networking.vue +2 -2
  72. package/components/form/NodeScheduling.vue +1 -1
  73. package/components/form/PodAffinity.vue +1 -1
  74. package/components/form/ProjectMemberEditor.vue +4 -4
  75. package/components/form/ResourceQuota/Namespace.vue +2 -2
  76. package/components/form/ResourceQuota/NamespaceRow.vue +2 -2
  77. package/components/form/ResourceQuota/Project.vue +1 -1
  78. package/components/form/ResourceQuota/shared.js +2 -2
  79. package/components/form/ResourceSelector.vue +1 -1
  80. package/components/form/ResourceTabs/index.vue +1 -1
  81. package/components/form/RuleSelector.vue +1 -1
  82. package/components/form/SecretSelector.vue +4 -4
  83. package/components/form/Select.vue +2 -2
  84. package/components/form/SelectOrCreateAuthSecret.vue +3 -3
  85. package/components/form/ServiceNameSelect.vue +1 -1
  86. package/components/form/ServicePorts.vue +1 -1
  87. package/components/form/ShellInput.vue +1 -1
  88. package/components/form/SimpleSecretSelector.vue +4 -4
  89. package/components/form/Taints.vue +1 -1
  90. package/components/form/ValueFromResource.vue +3 -3
  91. package/components/form/WorkloadPorts.vue +8 -7
  92. package/components/form/__tests__/Error.test.ts +1 -1
  93. package/components/form/__tests__/KeyValue.test.ts +21 -0
  94. package/components/formatter/ClusterLink.vue +1 -1
  95. package/components/formatter/ClusterProvider.vue +13 -2
  96. package/components/formatter/Endpoints.vue +1 -1
  97. package/components/formatter/FleetSummaryGraph.vue +2 -2
  98. package/components/formatter/IngressTarget.vue +2 -2
  99. package/components/formatter/PodImages.vue +1 -1
  100. package/components/formatter/PrincipalGroupBindings.vue +1 -1
  101. package/components/formatter/ReceiverIcons.vue +3 -3
  102. package/components/formatter/ServiceType.vue +1 -1
  103. package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
  104. package/components/formatter/WorkloadHealthScale.vue +1 -1
  105. package/components/formatter/__tests__/LiveDate.test.ts +1 -1
  106. package/components/graph/Bar.vue +1 -1
  107. package/components/graph/LinePlot.vue +3 -3
  108. package/components/nav/Group.vue +2 -2
  109. package/components/nav/Header.vue +5 -5
  110. package/components/nav/NamespaceFilter.vue +14 -14
  111. package/components/nav/TopLevelMenu.vue +76 -11
  112. package/components/nav/WindowManager/ContainerLogs.vue +2 -2
  113. package/components/nav/WindowManager/ContainerShell.vue +1 -1
  114. package/components/nav/WorkspaceSwitcher.vue +1 -1
  115. package/config/home-links.js +4 -4
  116. package/config/labels-annotations.js +8 -8
  117. package/config/pod-security-admission.ts +1 -1
  118. package/config/product/auth.js +4 -4
  119. package/config/product/explorer.js +14 -0
  120. package/config/router.js +5 -0
  121. package/config/store.js +2 -0
  122. package/config/table-headers.js +13 -13
  123. package/config/uiplugins.js +8 -1
  124. package/core/plugin-routes.ts +3 -2
  125. package/core/plugin.ts +3 -3
  126. package/core/plugins.js +7 -7
  127. package/creators/app/files/.gitignore +0 -3
  128. package/creators/pkg/files/index.ts +1 -1
  129. package/detail/cis.cattle.io.clusterscan.vue +3 -3
  130. package/detail/fleet.cattle.io.bundle.vue +1 -1
  131. package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
  132. package/detail/management.cattle.io.user.vue +12 -12
  133. package/detail/namespace.vue +4 -4
  134. package/detail/networking.k8s.io.ingress.vue +3 -3
  135. package/detail/node.vue +2 -2
  136. package/detail/provisioning.cattle.io.cluster.vue +9 -10
  137. package/detail/service.vue +1 -1
  138. package/detail/workload/index.vue +3 -3
  139. package/dialog/AddProjectMemberDialog.vue +2 -2
  140. package/dialog/DrainNode.vue +1 -1
  141. package/dialog/GenericPrompt.vue +9 -5
  142. package/dialog/RotateEncryptionKeyDialog.vue +2 -2
  143. package/dialog/ScaleMachineDownDialog.vue +2 -2
  144. package/edit/auth/azuread.vue +3 -3
  145. package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
  146. package/edit/cis.cattle.io.clusterscan.vue +5 -5
  147. package/edit/cloudcredential.vue +4 -4
  148. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
  149. package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
  150. package/edit/fleet.cattle.io.gitrepo.vue +6 -6
  151. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  152. package/edit/logging-flow/index.vue +4 -4
  153. package/edit/logging.banzaicloud.io.output/index.vue +3 -3
  154. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  155. package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
  156. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  157. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  158. package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
  159. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  160. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
  161. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
  162. package/edit/management.cattle.io.project.vue +3 -3
  163. package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
  164. package/edit/management.cattle.io.setting.vue +1 -1
  165. package/edit/management.cattle.io.user.vue +2 -2
  166. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
  167. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  168. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
  169. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
  170. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
  171. package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
  172. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  173. package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
  174. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
  175. package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
  176. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
  177. package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
  178. package/edit/monitoring.coreos.com.route.vue +2 -2
  179. package/edit/namespace.vue +21 -13
  180. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
  181. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  182. package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
  183. package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
  184. package/edit/networking.k8s.io.ingress/index.vue +4 -4
  185. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  186. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  187. package/edit/persistentvolume/index.vue +4 -4
  188. package/edit/persistentvolumeclaim.vue +3 -3
  189. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
  190. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
  191. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  192. package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
  193. package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
  194. package/edit/resources.cattle.io.backup.vue +2 -2
  195. package/edit/resources.cattle.io.restore.vue +3 -3
  196. package/edit/secret/generic.vue +1 -1
  197. package/edit/secret/index.vue +3 -3
  198. package/edit/service.vue +3 -21
  199. package/edit/serviceaccount.vue +2 -2
  200. package/edit/storage.k8s.io.storageclass/index.vue +4 -4
  201. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
  202. package/edit/token.vue +5 -5
  203. package/edit/workload/index.vue +1 -1
  204. package/edit/workload/mixins/workload.js +8 -8
  205. package/edit/workload/storage/ContainerMountPaths.vue +9 -9
  206. package/edit/workload/storage/Mount.vue +2 -2
  207. package/edit/workload/storage/csi/index.vue +1 -1
  208. package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
  209. package/edit/workload/storage/index.vue +6 -6
  210. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
  211. package/initialize/client.js +8 -8
  212. package/initialize/index.js +1 -4
  213. package/layouts/default.vue +38 -11
  214. package/list/catalog.cattle.io.clusterrepo.vue +9 -1
  215. package/list/cis.cattle.io.clusterscan.vue +1 -1
  216. package/list/fleet.cattle.io.cluster.vue +2 -2
  217. package/list/group.principal.vue +1 -1
  218. package/list/helm.cattle.io.projecthelmchart.vue +2 -2
  219. package/list/management.cattle.io.cluster.vue +1 -1
  220. package/list/management.cattle.io.feature.vue +1 -1
  221. package/list/management.cattle.io.user.vue +2 -2
  222. package/list/node.vue +5 -5
  223. package/list/provisioning.cattle.io.cluster.vue +4 -5
  224. package/machine-config/amazonec2.vue +2 -2
  225. package/machine-config/digitalocean.vue +4 -4
  226. package/machine-config/linode.vue +4 -4
  227. package/machine-config/vmwarevsphere.vue +12 -12
  228. package/middleware/authenticated.js +7 -6
  229. package/mixins/brand.js +1 -1
  230. package/mixins/chart.js +6 -6
  231. package/mixins/fetch.client.js +2 -2
  232. package/mixins/form-validation.js +7 -7
  233. package/mixins/resource-fetch-namespaced.js +1 -1
  234. package/mixins/resource-fetch.js +2 -2
  235. package/models/apps.statefulset.js +2 -2
  236. package/models/batch.cronjob.js +1 -1
  237. package/models/catalog.cattle.io.app.js +4 -4
  238. package/models/cis.cattle.io.clusterscan.js +1 -1
  239. package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
  240. package/models/cis.cattle.io.clusterscanreport.js +1 -1
  241. package/models/cloudcredential.js +1 -1
  242. package/models/cluster/node.js +5 -5
  243. package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
  244. package/models/fleet.cattle.io.gitrepo.js +3 -3
  245. package/models/group.principal.js +4 -4
  246. package/models/helm.cattle.io.projecthelmchart.js +2 -2
  247. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  248. package/models/logging.banzaicloud.io.flow.js +5 -5
  249. package/models/logging.banzaicloud.io.output.js +2 -2
  250. package/models/management.cattle.io.cluster.js +10 -14
  251. package/models/management.cattle.io.globalrole.js +4 -4
  252. package/models/management.cattle.io.node.js +2 -2
  253. package/models/management.cattle.io.nodepool.js +3 -3
  254. package/models/management.cattle.io.nodetemplate.js +4 -4
  255. package/models/management.cattle.io.project.js +2 -2
  256. package/models/management.cattle.io.roletemplate.js +1 -1
  257. package/models/management.cattle.io.setting.js +1 -1
  258. package/models/management.cattle.io.user.js +5 -5
  259. package/models/monitoring.coreos.com.receiver.js +9 -9
  260. package/models/namespace.js +1 -1
  261. package/models/networking.k8s.io.ingress.js +5 -5
  262. package/models/persistentvolume.js +3 -3
  263. package/models/pod.js +3 -3
  264. package/models/provisioning.cattle.io.cluster.js +39 -27
  265. package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
  266. package/models/rbac.authorization.k8s.io.role.js +3 -3
  267. package/models/secret.js +1 -1
  268. package/models/service.js +2 -2
  269. package/models/storage.k8s.io.storageclass.js +2 -2
  270. package/models/token.js +1 -1
  271. package/models/workload.js +6 -6
  272. package/models/workload.service.js +5 -21
  273. package/package.json +2 -1
  274. package/pages/about.vue +9 -9
  275. package/pages/account/index.vue +2 -2
  276. package/pages/auth/login.vue +15 -12
  277. package/pages/auth/verify.vue +6 -0
  278. package/pages/c/_cluster/apps/charts/index.vue +4 -4
  279. package/pages/c/_cluster/apps/charts/install.vue +28 -20
  280. package/pages/c/_cluster/auth/roles/index.vue +9 -9
  281. package/pages/c/_cluster/explorer/index.vue +41 -16
  282. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  283. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
  284. package/pages/c/_cluster/fleet/index.vue +11 -11
  285. package/pages/c/_cluster/monitoring/index.vue +1 -1
  286. package/pages/c/_cluster/settings/links.vue +3 -3
  287. package/pages/c/_cluster/settings/performance.vue +1 -1
  288. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
  289. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
  290. package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
  291. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
  292. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
  293. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
  294. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
  295. package/pages/c/_cluster/uiplugins/index.vue +22 -19
  296. package/pages/diagnostic.vue +6 -6
  297. package/pages/home.vue +3 -3
  298. package/pages/prefs.vue +2 -2
  299. package/pages/rio/mesh.vue +3 -3
  300. package/pages/support/index.vue +10 -1
  301. package/pkg/auto-import.js +1 -1
  302. package/pkg/tsconfig.json +1 -0
  303. package/pkg/vue.config.js +1 -1
  304. package/plugins/axios.js +1 -1
  305. package/plugins/clean-html-directive.js +1 -1
  306. package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
  307. package/plugins/dashboard-store/actions.js +4 -4
  308. package/plugins/dashboard-store/getters.js +1 -1
  309. package/plugins/dashboard-store/index.js +1 -1
  310. package/plugins/dashboard-store/mutations.js +2 -2
  311. package/plugins/dashboard-store/resource-class.js +8 -8
  312. package/plugins/i18n.js +1 -1
  313. package/plugins/plugin.js +5 -1
  314. package/plugins/steve/actions.js +3 -3
  315. package/plugins/steve/getters.js +3 -3
  316. package/plugins/steve/hybrid-class.js +1 -1
  317. package/plugins/steve/mutations.js +1 -1
  318. package/plugins/steve/performanceTesting.js +1 -1
  319. package/plugins/steve/resourceWatcher.js +1 -1
  320. package/plugins/steve/subscribe.js +6 -6
  321. package/plugins/steve/worker/web-worker.basic.js +1 -1
  322. package/promptRemove/management.cattle.io.project.vue +3 -3
  323. package/promptRemove/mixin/roleDeletionCheck.js +4 -4
  324. package/promptRemove/pod.vue +1 -1
  325. package/rancher-components/StringList/StringList.test.ts +80 -0
  326. package/rancher-components/StringList/StringList.vue +577 -0
  327. package/rancher-components/StringList/index.ts +1 -0
  328. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
  329. package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
  330. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
  331. package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
  332. package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
  333. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
  334. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
  335. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
  336. package/rancher-components/components/StringList/StringList.test.ts +10 -9
  337. package/rancher-components/components/StringList/StringList.vue +5 -5
  338. package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
  339. package/store/action-menu.js +4 -4
  340. package/store/auth.js +40 -7
  341. package/store/aws.js +1 -1
  342. package/store/catalog.js +12 -11
  343. package/store/digitalocean.js +4 -4
  344. package/store/features.js +1 -0
  345. package/store/github.js +70 -213
  346. package/store/gitlab.js +159 -0
  347. package/store/growl.js +1 -1
  348. package/store/i18n.js +7 -7
  349. package/store/index.js +63 -22
  350. package/store/linode.js +1 -1
  351. package/store/plugins.js +5 -5
  352. package/store/pnap.js +1 -1
  353. package/store/prefs.js +6 -6
  354. package/store/resource-fetch.js +3 -3
  355. package/store/type-map.js +61 -42
  356. package/store/uiplugins.ts +2 -1
  357. package/store/wm.js +5 -4
  358. package/tsconfig.default.json +10 -0
  359. package/tsconfig.json +2 -9
  360. package/types/shell/index.d.ts +12 -4
  361. package/utils/__tests__/version.test.ts +28 -0
  362. package/utils/alertmanagerconfig.js +4 -4
  363. package/utils/array.ts +4 -4
  364. package/utils/async.ts +1 -1
  365. package/utils/auth.js +3 -3
  366. package/utils/axios.js +5 -5
  367. package/utils/cluster.js +4 -3
  368. package/utils/color.js +10 -0
  369. package/utils/create-yaml.js +4 -4
  370. package/utils/crypto/browserHashUtils.js +1 -1
  371. package/utils/crypto/browserMd5.js +1 -1
  372. package/utils/crypto/browserSha1.js +1 -1
  373. package/utils/crypto/browserSha256.js +1 -1
  374. package/utils/crypto/index.js +3 -3
  375. package/utils/favicon.js +2 -3
  376. package/utils/gatekeeper/util.js +3 -3
  377. package/utils/gc/gc.ts +2 -2
  378. package/utils/git.ts +92 -0
  379. package/utils/grafana.js +4 -4
  380. package/utils/monitoring.js +2 -2
  381. package/utils/nuxt.js +2 -2
  382. package/utils/object.js +5 -5
  383. package/utils/pod-security-admission.ts +1 -1
  384. package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
  385. package/utils/select.js +2 -2
  386. package/utils/selector.js +2 -2
  387. package/utils/settings.ts +17 -2
  388. package/utils/socket.js +30 -6
  389. package/utils/sort.js +1 -1
  390. package/utils/string.js +1 -1
  391. package/utils/url.ts +1 -1
  392. package/utils/validators/formRules/index.ts +3 -3
  393. package/utils/validators/role-template.js +4 -4
  394. package/utils/version.js +14 -1
  395. package/vue.config.js +19 -13
  396. package/components/form/GithubPicker.vue +0 -390
@@ -454,7 +454,7 @@ export default {
454
454
  const cluster = this.currentCluster;
455
455
  const projects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
456
456
 
457
- const out = projects.filter(x => x.spec.clusterName === cluster?.id).map((project) => {
457
+ const out = projects.filter((x) => x.spec.clusterName === cluster?.id).map((project) => {
458
458
  return {
459
459
  id: project.id,
460
460
  label: project.nameDisplay,
@@ -598,19 +598,19 @@ export default {
598
598
  diffMode: mapPref(DIFF),
599
599
 
600
600
  step1Description() {
601
- const descriptionKey = this.steps.find(s => s.name === 'basics').descriptionKey;
601
+ const descriptionKey = this.steps.find((s) => s.name === 'basics').descriptionKey;
602
602
 
603
603
  return this.$store.getters['i18n/withFallback'](descriptionKey, { action: this.action, existing: !!this.existing }, '');
604
604
  },
605
605
 
606
606
  step2Description() {
607
- const descriptionKey = this.steps.find(s => s.name === 'helmValues').descriptionKey;
607
+ const descriptionKey = this.steps.find((s) => s.name === 'helmValues').descriptionKey;
608
608
 
609
609
  return this.$store.getters['i18n/withFallback'](descriptionKey, { action: this.action, existing: !!this.existing }, '');
610
610
  },
611
611
 
612
612
  step3Description() {
613
- const descriptionKey = this.steps.find(s => s.name === 'helmCli').descriptionKey;
613
+ const descriptionKey = this.steps.find((s) => s.name === 'helmCli').descriptionKey;
614
614
 
615
615
  return this.$store.getters['i18n/withFallback'](descriptionKey, { action: this.action, existing: !!this.existing }, '');
616
616
  },
@@ -794,7 +794,7 @@ export default {
794
794
  },
795
795
 
796
796
  beforeDestroy() {
797
- this.shownReadmeWindows.forEach(name => this.$store.dispatch('wm/close', name, { root: true }));
797
+ this.shownReadmeWindows.forEach((name) => this.$store.dispatch('wm/close', name, { root: true }));
798
798
  },
799
799
 
800
800
  methods: {
@@ -809,7 +809,7 @@ export default {
809
809
  }) : {};
810
810
 
811
811
  if (provCluster.isRke2) { // isRke2 returns true for both RKE2 and K3s clusters.
812
- const agentConfig = provCluster.spec?.rkeConfig?.machineSelectorConfig?.find(x => !x.machineLabelSelector).config;
812
+ const agentConfig = provCluster.spec?.rkeConfig?.machineSelectorConfig?.find((x) => !x.machineLabelSelector).config;
813
813
 
814
814
  // If a cluster scoped registry exists,
815
815
  // it should be used by default.
@@ -885,7 +885,7 @@ export default {
885
885
  if ( component ) {
886
886
  const steps = await this.$store.getters['catalog/chartSteps'](component);
887
887
 
888
- this.customSteps = await Promise.all( steps.map(cs => this.loadChartStep(cs)));
888
+ this.customSteps = await Promise.all( steps.map((cs) => this.loadChartStep(cs)));
889
889
  }
890
890
  },
891
891
 
@@ -1005,7 +1005,7 @@ export default {
1005
1005
 
1006
1006
  const cluster = this.currentCluster;
1007
1007
  const projects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
1008
- const systemProjectId = projects.find(p => p.spec?.displayName === 'System')?.id?.split('/')?.[1] || '';
1008
+ const systemProjectId = projects.find((p) => p.spec?.displayName === 'System')?.id?.split('/')?.[1] || '';
1009
1009
 
1010
1010
  const serverUrl = this.serverUrlSetting?.value || '';
1011
1011
  const isWindows = (cluster?.workerOSs || []).includes(WINDOWS);
@@ -1176,7 +1176,7 @@ export default {
1176
1176
 
1177
1177
  const more = [];
1178
1178
 
1179
- const auto = (this.version?.annotations?.[CATALOG_ANNOTATIONS.AUTO_INSTALL_GVK] || '').split(/\s*,\s*/).filter(x => !!x).reverse();
1179
+ const auto = (this.version?.annotations?.[CATALOG_ANNOTATIONS.AUTO_INSTALL_GVK] || '').split(/\s*,\s*/).filter((x) => !!x).reverse();
1180
1180
 
1181
1181
  for ( const gvr of auto ) {
1182
1182
  const provider = this.$store.getters['catalog/versionProviding']({
@@ -1267,7 +1267,7 @@ export default {
1267
1267
  },
1268
1268
 
1269
1269
  updateStep(stepName, update) {
1270
- const step = this.steps.find(step => step.name === stepName);
1270
+ const step = this.steps.find((step) => step.name === stepName);
1271
1271
 
1272
1272
  if (step) {
1273
1273
  for (const prop in update) {
@@ -1283,7 +1283,7 @@ export default {
1283
1283
  <Loading v-if="$fetchState.pending" />
1284
1284
  <div
1285
1285
  v-else-if="!legacyApp && !mcapp"
1286
- class="install-steps"
1286
+ class="install-steps pt-20"
1287
1287
  :class="{ 'isPlainLayout': isPlainLayout}"
1288
1288
  >
1289
1289
  <TypeDescription resource="chart" />
@@ -1296,6 +1296,7 @@ export default {
1296
1296
  :banner-title-subtext="stepperSubtext"
1297
1297
  :finish-mode="action"
1298
1298
  class="wizard"
1299
+ :class="{'windowsIncompatible': windowsIncompatible}"
1299
1300
  @cancel="cancel"
1300
1301
  @finish="finish"
1301
1302
  >
@@ -1840,7 +1841,6 @@ export default {
1840
1841
  border: $padding solid white;
1841
1842
  border-radius: calc( 3 * var(--border-radius));
1842
1843
  position: relative;
1843
- margin-bottom: 15px
1844
1844
  }
1845
1845
 
1846
1846
  .logo {
@@ -1855,6 +1855,22 @@ export default {
1855
1855
  left: 0;
1856
1856
  margin: auto;
1857
1857
  }
1858
+
1859
+ // Hack - We're adding an absolute tag under the logo that we want to consume space without breaking vertical alignment of row.
1860
+ // W ith the slots available this isn't possible without adding tag specific styles to the root wizard classes
1861
+ &.windowsIncompatible {
1862
+ ::v-deep .header {
1863
+ padding-bottom: 15px;
1864
+ }
1865
+ }
1866
+
1867
+ .os-label {
1868
+ position: absolute;
1869
+ background-color: var(--warning-banner-bg);
1870
+ color:var(--warning);
1871
+ margin-top: 5px;
1872
+ }
1873
+
1858
1874
  }
1859
1875
 
1860
1876
  .step {
@@ -2053,12 +2069,4 @@ export default {
2053
2069
  }
2054
2070
  }
2055
2071
 
2056
- .os-label {
2057
- position: relative;
2058
- background-color: var(--warning-banner-bg);
2059
- color:var(--warning);
2060
- margin-top: 5px;
2061
- top: 21px;
2062
- }
2063
-
2064
2072
  </style>
@@ -49,13 +49,13 @@ export default {
49
49
  const roleTemplatesSchema = this.$store.getters[`management/schemaFor`](MANAGEMENT.ROLE_TEMPLATE);
50
50
 
51
51
  const roleTemplateHeaders = this.$store.getters['type-map/headersFor'](roleTemplatesSchema);
52
- const defaultHeaderIndex = roleTemplateHeaders.findIndex(header => header.name === 'default');
52
+ const defaultHeaderIndex = roleTemplateHeaders.findIndex((header) => header.name === 'default');
53
53
 
54
54
  return {
55
55
  tabs: {
56
56
  [GLOBAL]: {
57
- canFetch: globalRoleSchema?.collectionMethods.find(verb => verb === 'GET'),
58
- canCreate: globalRoleSchema?.resourceMethods.find(verb => CREATE_VERBS.has(verb)),
57
+ canFetch: globalRoleSchema?.collectionMethods.find((verb) => verb === 'GET'),
58
+ canCreate: globalRoleSchema?.resourceMethods.find((verb) => CREATE_VERBS.has(verb)),
59
59
  weight: 3,
60
60
  labelKey: SUBTYPE_MAPPING.GLOBAL.labelKey,
61
61
  schema: globalRoleSchema,
@@ -65,8 +65,8 @@ export default {
65
65
  },
66
66
  },
67
67
  [CLUSTER]: {
68
- canFetch: roleTemplatesSchema?.collectionMethods.find(verb => verb === 'GET'),
69
- canCreate: roleTemplatesSchema?.resourceMethods.find(verb => CREATE_VERBS.has(verb)),
68
+ canFetch: roleTemplatesSchema?.collectionMethods.find((verb) => verb === 'GET'),
69
+ canCreate: roleTemplatesSchema?.resourceMethods.find((verb) => CREATE_VERBS.has(verb)),
70
70
  labelKey: SUBTYPE_MAPPING.CLUSTER.labelKey,
71
71
  weight: 2,
72
72
  schema: roleTemplatesSchema,
@@ -77,8 +77,8 @@ export default {
77
77
  },
78
78
  },
79
79
  [PROJECT]: {
80
- canFetch: roleTemplatesSchema?.collectionMethods.find(verb => verb === 'GET'),
81
- canCreate: roleTemplatesSchema?.resourceMethods.find(verb => CREATE_VERBS.has(verb)),
80
+ canFetch: roleTemplatesSchema?.collectionMethods.find((verb) => verb === 'GET'),
81
+ canCreate: roleTemplatesSchema?.resourceMethods.find((verb) => CREATE_VERBS.has(verb)),
82
82
  labelKey: SUBTYPE_MAPPING.NAMESPACE.labelKey,
83
83
  weight: 1,
84
84
  schema: roleTemplatesSchema,
@@ -105,11 +105,11 @@ export default {
105
105
  },
106
106
 
107
107
  clusterResources() {
108
- return this.roleTemplates.filter(r => r.context === SUBTYPE_MAPPING.CLUSTER.context);
108
+ return this.roleTemplates.filter((r) => r.context === SUBTYPE_MAPPING.CLUSTER.context);
109
109
  },
110
110
 
111
111
  namespaceResources() {
112
- return this.roleTemplates.filter(r => r.context === SUBTYPE_MAPPING.NAMESPACE.context);
112
+ return this.roleTemplates.filter((r) => r.context === SUBTYPE_MAPPING.NAMESPACE.context);
113
113
  },
114
114
 
115
115
  type() {
@@ -1,16 +1,8 @@
1
1
  <script>
2
2
  import DashboardMetrics from '@shell/components/DashboardMetrics';
3
3
  import { mapGetters } from 'vuex';
4
- import { setPromiseResult } from '@shell/utils/promise';
5
- import AlertTable from '@shell/components/AlertTable';
6
- import { Banner } from '@components/Banner';
7
- import { parseSi, createMemoryValues } from '@shell/utils/units';
8
- import {
9
- NAME,
10
- ROLES,
11
- STATE,
12
- } from '@shell/config/table-headers';
13
4
  import {
5
+ CAPI,
14
6
  ENDPOINTS,
15
7
  EVENT,
16
8
  NAMESPACE,
@@ -25,6 +17,16 @@ import {
25
17
  CATALOG,
26
18
  PSP,
27
19
  } from '@shell/config/types';
20
+ import { setPromiseResult } from '@shell/utils/promise';
21
+ import AlertTable from '@shell/components/AlertTable';
22
+ import { Banner } from '@components/Banner';
23
+ import { parseSi, createMemoryValues } from '@shell/utils/units';
24
+ import {
25
+ NAME,
26
+ ROLES,
27
+ STATE,
28
+ } from '@shell/config/table-headers';
29
+
28
30
  import { mapPref, CLUSTER_TOOLS_TIP, PSP_DEPRECATION_BANNER } from '@shell/store/prefs';
29
31
  import { haveV1Monitoring, monitoringStatus } from '@shell/utils/monitoring';
30
32
  import Tabbed from '@shell/components/Tabbed';
@@ -198,6 +200,10 @@ export default {
198
200
  return this.t(`cluster.provider.${ provider }`);
199
201
  },
200
202
 
203
+ isHarvesterCluster() {
204
+ return this.currentCluster?.isHarvester;
205
+ },
206
+
201
207
  isRKE() {
202
208
  return ['rke', 'rke.windows', 'rke2', 'rke2.windows'].includes((this.currentCluster.status.provider || '').toLowerCase());
203
209
  },
@@ -211,7 +217,7 @@ export default {
211
217
  // Merge with RESOURCES list
212
218
  const allowedResources = [...new Set([...defaultAllowedResources, ...RESOURCES])];
213
219
 
214
- return allowedResources.filter(resource => this.$store.getters['cluster/schemaFor'](resource));
220
+ return allowedResources.filter((resource) => this.$store.getters['cluster/schemaFor'](resource));
215
221
  },
216
222
 
217
223
  componentServices() {
@@ -291,9 +297,9 @@ export default {
291
297
  });
292
298
  }
293
299
 
294
- const someNonWorkerRoles = checkNodes.some(node => node.hasARole && !node.isWorker);
300
+ const someNonWorkerRoles = checkNodes.some((node) => node.hasARole && !node.isWorker);
295
301
  const metrics = this.nodeMetrics.filter((nodeMetrics) => {
296
- const node = this.nodes.find(nd => nd.id === nodeMetrics.id);
302
+ const node = this.nodes.find((nd) => nd.id === nodeMetrics.id);
297
303
 
298
304
  return node && (!someNonWorkerRoles || node.isWorker);
299
305
  });
@@ -366,7 +372,7 @@ export default {
366
372
  methods: {
367
373
  // Ported from Ember
368
374
  isComponentStatusHealthy(field) {
369
- const matching = (this.currentCluster?.status?.componentStatuses || []).filter(s => s.name.startsWith(field));
375
+ const matching = (this.currentCluster?.status?.componentStatuses || []).filter((s) => s.name.startsWith(field));
370
376
 
371
377
  // If there's no matching component status, it's "healthy"
372
378
  if ( !matching.length ) {
@@ -374,7 +380,7 @@ export default {
374
380
  }
375
381
 
376
382
  const count = matching.reduce((acc, status) => {
377
- const conditions = status.conditions.find(c => c.status !== 'True');
383
+ const conditions = status.conditions.find((c) => c.status !== 'True');
378
384
 
379
385
  return !conditions ? acc : acc + 1;
380
386
  }, 0);
@@ -397,6 +403,16 @@ export default {
397
403
  // Events/Alerts tab changed
398
404
  tabChange(neu) {
399
405
  this.selectedTab = neu?.selectedName;
406
+ },
407
+
408
+ async goToHarvesterCluster() {
409
+ try {
410
+ const provClusters = await this.$store.dispatch('management/findAll', { type: CAPI.RANCHER_CLUSTER });
411
+ const provCluster = provClusters.find((p) => p.mgmt.id === this.currentCluster.id);
412
+
413
+ await provCluster.goToHarvesterCluster();
414
+ } catch {
415
+ }
400
416
  }
401
417
  },
402
418
  };
@@ -438,8 +454,17 @@ export default {
438
454
  >
439
455
  <div>
440
456
  <label>{{ t('glance.provider') }}: </label>
441
- <span>
442
- {{ displayProvider }}</span>
457
+ <span v-if="isHarvesterCluster">
458
+ <a
459
+ role="button"
460
+ @click="goToHarvesterCluster"
461
+ >
462
+ {{ displayProvider }}
463
+ </a>
464
+ </span>
465
+ <span v-else>
466
+ {{ displayProvider }}
467
+ </span>
443
468
  </div>
444
469
  <div>
445
470
  <label>{{ t('glance.version') }}: </label>
@@ -47,7 +47,7 @@ export default {
47
47
  }
48
48
 
49
49
  // Need the project ID of the system project in order to get the apps
50
- const systemProject = projects.find(p => p.spec?.displayName === 'System');
50
+ const systemProject = projects.find((p) => p.spec?.displayName === 'System');
51
51
 
52
52
  if (systemProject) {
53
53
  const id = systemProject.id.replace('/', ':');
@@ -86,7 +86,7 @@ export default {
86
86
  },
87
87
 
88
88
  rancherCatalog() {
89
- return this.$store.getters['catalog/repos'].find(x => x.isRancher);
89
+ return this.$store.getters['catalog/repos'].find((x) => x.isRancher);
90
90
  },
91
91
 
92
92
  installedApps() {
@@ -121,7 +121,7 @@ export default {
121
121
  showTypes: [CATALOG_ANNOTATIONS._CLUSTER_TOOL],
122
122
  });
123
123
 
124
- charts = charts.filter(c => c.sideLabel !== 'Experimental');
124
+ charts = charts.filter((c) => c.sideLabel !== 'Experimental');
125
125
 
126
126
  // If legacy support is enabled, show V1 charts for some V1 Cluster tools
127
127
  if (this.legacyEnabled) {
@@ -227,18 +227,18 @@ export default {
227
227
  const c = this.v1SystemCatalog?.[id];
228
228
 
229
229
  if (c?.spec?.versions) {
230
- c.spec.versions.forEach(v => versions.push({ version: v.version }));
230
+ c.spec.versions.forEach((v) => versions.push({ version: v.version }));
231
231
  }
232
232
 
233
233
  return versions;
234
234
  },
235
235
 
236
236
  checkLegacyApp(chartsWithApps, v1Apps, v1ChartName, v2ChartName, v1AppName, showOnlyIfInstalled) {
237
- const v1 = chartsWithApps.find(a => a.chart.chartName === v1ChartName);
238
- const v2 = chartsWithApps.find(a => a.chart.chartName === v2ChartName);
237
+ const v1 = chartsWithApps.find((a) => a.chart.chartName === v1ChartName);
238
+ const v2 = chartsWithApps.find((a) => a.chart.chartName === v2ChartName);
239
239
 
240
240
  if (v1) {
241
- const v1App = v1Apps.find(a => a.id.indexOf(v1AppName) > 0);
241
+ const v1App = v1Apps.find((a) => a.id.indexOf(v1AppName) > 0);
242
242
 
243
243
  v1.app = v1App;
244
244
 
@@ -255,7 +255,7 @@ export default {
255
255
  }
256
256
  } else if (showOnlyIfInstalled) {
257
257
  // Remove the v1 chart if it is not already installed for charts which we no longer support
258
- chartsWithApps = chartsWithApps.filter(c => c !== v1);
258
+ chartsWithApps = chartsWithApps.filter((c) => c !== v1);
259
259
  }
260
260
 
261
261
  if (v2) {
@@ -61,7 +61,7 @@ export const gitRepoGraphConfig = {
61
61
  children: []
62
62
  };
63
63
 
64
- const bds = data.bundleDeployments.filter(bd => bundle.id === `${ bd.metadata?.labels?.['fleet.cattle.io/bundle-namespace'] }/${ bd.metadata?.labels?.['fleet.cattle.io/bundle-name'] }`);
64
+ const bds = data.bundleDeployments.filter((bd) => bundle.id === `${ bd.metadata?.labels?.['fleet.cattle.io/bundle-namespace'] }/${ bd.metadata?.labels?.['fleet.cattle.io/bundle-name'] }`);
65
65
 
66
66
  bds.forEach((bd) => {
67
67
  const bdLowercaseState = bd.state ? bd.state.toLowerCase() : 'unknown';
@@ -46,7 +46,7 @@ export default {
46
46
  this.fleetWorkspacesData = hash.fleetWorkspaces || [];
47
47
 
48
48
  try {
49
- const permissions = await checkPermissions({ workspaces: { type: FLEET.WORKSPACE }, gitRepos: { type: FLEET.GIT_REPO, schemaValidator: schema => schema.resourceMethods.includes('PUT') } }, this.$store.getters);
49
+ const permissions = await checkPermissions({ workspaces: { type: FLEET.WORKSPACE }, gitRepos: { type: FLEET.GIT_REPO, schemaValidator: (schema) => schema.resourceMethods.includes('PUT') } }, this.$store.getters);
50
50
 
51
51
  this.permissions = permissions;
52
52
  } catch (e) {
@@ -128,13 +128,13 @@ export default {
128
128
  });
129
129
  },
130
130
  workspacesData() {
131
- return this.fleetWorkspaces.filter(ws => ws.repos && ws.repos.length);
131
+ return this.fleetWorkspaces.filter((ws) => ws.repos && ws.repos.length);
132
132
  },
133
133
  emptyWorkspaces() {
134
- return this.fleetWorkspaces.filter(ws => !ws.repos || !ws.repos.length);
134
+ return this.fleetWorkspaces.filter((ws) => !ws.repos || !ws.repos.length);
135
135
  },
136
136
  areAllCardsExpanded() {
137
- return Object.keys(this.isCollapsed).every(key => !this.isCollapsed[key]);
137
+ return Object.keys(this.isCollapsed).every((key) => !this.isCollapsed[key]);
138
138
  }
139
139
  },
140
140
  methods: {
@@ -166,19 +166,19 @@ export default {
166
166
  icon: STATES[STATES_ENUM.NOT_READY].compoundIcon
167
167
  };
168
168
  case 'bundles':
169
- if (row.bundles?.length && row.bundles?.every(bundle => bundle.state?.toLowerCase() === STATES_ENUM.ACTIVE)) {
169
+ if (row.bundles?.length && row.bundles?.every((bundle) => bundle.state?.toLowerCase() === STATES_ENUM.ACTIVE)) {
170
170
  return {
171
171
  badgeClass: STATES[STATES_ENUM.ACTIVE].color ? STATES[STATES_ENUM.ACTIVE].color : `${ STATES[STATES_ENUM.UNKNOWN].color } bg-unmapped-state`,
172
172
  icon: STATES[STATES_ENUM.ACTIVE].compoundIcon ? STATES[STATES_ENUM.ACTIVE].compoundIcon : `${ STATES[STATES_ENUM.UNKNOWN].compoundIcon } unmapped-icon`
173
173
  };
174
174
  }
175
- if (row.bundles?.length && row.bundles?.some(bundle => bundle.state?.toLowerCase() === STATES_ENUM.ERR_APPLIED)) {
175
+ if (row.bundles?.length && row.bundles?.some((bundle) => bundle.state?.toLowerCase() === STATES_ENUM.ERR_APPLIED)) {
176
176
  return {
177
177
  badgeClass: STATES[STATES_ENUM.ERR_APPLIED].color ? STATES[STATES_ENUM.ERR_APPLIED].color : `${ STATES[STATES_ENUM.UNKNOWN].color } bg-unmapped-state`,
178
178
  icon: STATES[STATES_ENUM.ERR_APPLIED].compoundIcon ? STATES[STATES_ENUM.ERR_APPLIED].compoundIcon : `${ STATES[STATES_ENUM.UNKNOWN].compoundIcon } unmapped-icon`
179
179
  };
180
180
  }
181
- if (row.bundles?.length && row.bundles?.some(bundle => bundle.state?.toLowerCase() === STATES_ENUM.NOT_READY)) {
181
+ if (row.bundles?.length && row.bundles?.some((bundle) => bundle.state?.toLowerCase() === STATES_ENUM.NOT_READY)) {
182
182
  return {
183
183
  badgeClass: STATES[STATES_ENUM.NOT_READY].color ? STATES[STATES_ENUM.NOT_READY].color : `${ STATES[STATES_ENUM.UNKNOWN].color } bg-unmapped-state`,
184
184
  icon: STATES[STATES_ENUM.NOT_READY].compoundIcon ? STATES[STATES_ENUM.NOT_READY].compoundIcon : `${ STATES[STATES_ENUM.UNKNOWN].compoundIcon } unmapped-icon`
@@ -197,19 +197,19 @@ export default {
197
197
  icon: STATES[STATES_ENUM.NOT_READY].compoundIcon
198
198
  };
199
199
  case 'resources':
200
- if (row.status?.resources?.length && row.status?.resources?.every(resource => resource.state?.toLowerCase() === STATES_ENUM.ACTIVE)) {
200
+ if (row.status?.resources?.length && row.status?.resources?.every((resource) => resource.state?.toLowerCase() === STATES_ENUM.ACTIVE)) {
201
201
  return {
202
202
  badgeClass: STATES[STATES_ENUM.ACTIVE].color ? STATES[STATES_ENUM.ACTIVE].color : `${ STATES[STATES_ENUM.UNKNOWN].color } bg-unmapped-state`,
203
203
  icon: STATES[STATES_ENUM.ACTIVE].compoundIcon ? STATES[STATES_ENUM.ACTIVE].compoundIcon : `${ STATES[STATES_ENUM.UNKNOWN].compoundIcon } unmapped-icon`
204
204
  };
205
205
  }
206
- if (row.status?.resources?.length && row.status?.resources?.some(resource => resource.state?.toLowerCase() === STATES_ENUM.ERR_APPLIED)) {
206
+ if (row.status?.resources?.length && row.status?.resources?.some((resource) => resource.state?.toLowerCase() === STATES_ENUM.ERR_APPLIED)) {
207
207
  return {
208
208
  badgeClass: STATES[STATES_ENUM.ERR_APPLIED].color ? STATES[STATES_ENUM.ERR_APPLIED].color : `${ STATES[STATES_ENUM.UNKNOWN].color } bg-unmapped-state`,
209
209
  icon: STATES[STATES_ENUM.ERR_APPLIED].compoundIcon ? STATES[STATES_ENUM.ERR_APPLIED].compoundIcon : `${ STATES[STATES_ENUM.UNKNOWN].compoundIcon } unmapped-icon`
210
210
  };
211
211
  }
212
- if (row.status?.resources?.length && row.status?.resources?.some(resource => resource.state?.toLowerCase() === STATES_ENUM.NOT_READY)) {
212
+ if (row.status?.resources?.length && row.status?.resources?.some((resource) => resource.state?.toLowerCase() === STATES_ENUM.NOT_READY)) {
213
213
  return {
214
214
  badgeClass: STATES[STATES_ENUM.NOT_READY].color ? STATES[STATES_ENUM.NOT_READY].color : `${ STATES[STATES_ENUM.UNKNOWN].color } bg-unmapped-state`,
215
215
  icon: STATES[STATES_ENUM.NOT_READY].compoundIcon ? STATES[STATES_ENUM.NOT_READY].compoundIcon : `${ STATES[STATES_ENUM.UNKNOWN].compoundIcon } unmapped-icon`
@@ -290,7 +290,7 @@ export default {
290
290
 
291
291
  watch: {
292
292
  fleetWorkspaces(value) {
293
- value?.filter(ws => ws.repos?.length).forEach((ws) => {
293
+ value?.filter((ws) => ws.repos?.length).forEach((ws) => {
294
294
  this.$set(this.isCollapsed, ws.id, false);
295
295
  });
296
296
  }
@@ -106,7 +106,7 @@ export default {
106
106
  const amMatch = findBy(externalLinks, 'group', 'alertmanager');
107
107
  const grafanaMatch = findBy(externalLinks, 'group', 'grafana');
108
108
  const promeMatch = externalLinks.filter(
109
- el => el.group === 'prometheus'
109
+ (el) => el.group === 'prometheus'
110
110
  );
111
111
 
112
112
  grafanaMatch.link = `${ getClusterPrefix(hash.app?.currentVersion || '', currentCluster.id) }/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-grafana:80/proxy/`;
@@ -22,7 +22,7 @@ export default {
22
22
  DefaultLinksEditor,
23
23
  },
24
24
  async fetch() {
25
- this.value = await fetchLinks(this.$store, this.hasSupport, false, str => this.t(str));
25
+ this.value = await fetchLinks(this.$store, this.hasSupport, false, (str) => this.t(str));
26
26
  },
27
27
 
28
28
  data() {
@@ -47,7 +47,7 @@ export default {
47
47
  allValues() {
48
48
  return {
49
49
  version: CUSTOM_LINKS_VERSION,
50
- defaults: this.value.defaults.filter(obj => obj.enabled).map(obj => obj.key),
50
+ defaults: this.value.defaults.filter((obj) => obj.enabled).map((obj) => obj.key),
51
51
  custom: this.value.custom
52
52
  };
53
53
  },
@@ -75,7 +75,7 @@ export default {
75
75
 
76
76
  await uiCustomLinks.save();
77
77
 
78
- this.value = await fetchLinks(this.$store, this.hasSupport, false, str => this.t(str));
78
+ this.value = await fetchLinks(this.$store, this.hasSupport, false, (str) => this.t(str));
79
79
  btnCB(true);
80
80
  } catch (err) {
81
81
  this.errors.push(err);
@@ -125,7 +125,7 @@ export default {
125
125
  }
126
126
 
127
127
  // We're enabling a preference. Are there any incomaptible preferences?
128
- if ((incompatible[property] || []).every(p => !this.value[p].enabled)) {
128
+ if ((incompatible[property] || []).every((p) => !this.value[p].enabled)) {
129
129
  // No, just set and exit
130
130
  this.value[property].enabled = true;
131
131
 
@@ -133,11 +133,11 @@ export default {
133
133
  ...mapGetters({ allRepos: 'catalog/repos' }),
134
134
 
135
135
  namespacedDeployments() {
136
- return this.$store.getters['management/all'](WORKLOAD_TYPES.DEPLOYMENT).filter(dep => dep.metadata.namespace === UI_PLUGIN_NAMESPACE);
136
+ return this.$store.getters['management/all'](WORKLOAD_TYPES.DEPLOYMENT).filter((dep) => dep.metadata.namespace === UI_PLUGIN_NAMESPACE);
137
137
  },
138
138
 
139
139
  namespacedServices() {
140
- return this.$store.getters['management/all'](SERVICE).filter(svc => svc.metadata.namespace === UI_PLUGIN_NAMESPACE);
140
+ return this.$store.getters['management/all'](SERVICE).filter((svc) => svc.metadata.namespace === UI_PLUGIN_NAMESPACE);
141
141
  }
142
142
  },
143
143
 
@@ -151,7 +151,7 @@ export default {
151
151
  {
152
152
  var: 'imagePullNamespacedSecrets',
153
153
  parsingFunc: (data) => {
154
- return data.filter(secret => (secret._type === SECRET_TYPES.DOCKER || secret._type === SECRET_TYPES.DOCKER_JSON));
154
+ return data.filter((secret) => (secret._type === SECRET_TYPES.DOCKER || secret._type === SECRET_TYPES.DOCKER_JSON));
155
155
  }
156
156
  }
157
157
  ]
@@ -211,7 +211,7 @@ export default {
211
211
  },
212
212
 
213
213
  async loadDeployment(image, name, btnCb) {
214
- const exists = this.namespacedDeployments.find(dep => dep.spec.template.spec.containers[0].image === image);
214
+ const exists = this.namespacedDeployments.find((dep) => dep.spec.template.spec.containers[0].image === image);
215
215
 
216
216
  if (!exists) {
217
217
  // Sets deploymentValues with name, labels, and imagePullSecrets
@@ -238,7 +238,7 @@ export default {
238
238
 
239
239
  async loadService(name, btnCb) {
240
240
  const serviceName = `${ name }-svc`;
241
- const exists = this.namespacedServices.find(svc => svc.metadata.name === serviceName);
241
+ const exists = this.namespacedServices.find((svc) => svc.metadata.name === serviceName);
242
242
 
243
243
  if (exists) {
244
244
  const error = {
@@ -285,7 +285,7 @@ export default {
285
285
 
286
286
  async loadRepo(name, btnCb) {
287
287
  const chartName = `${ name }-charts`;
288
- const exists = this.allRepos.find(repo => repo.metadata.name === chartName);
288
+ const exists = this.allRepos.find((repo) => repo.metadata.name === chartName);
289
289
 
290
290
  if (exists) {
291
291
  const error = {
@@ -47,11 +47,11 @@ export default {
47
47
  ...mapGetters({ allRepos: 'catalog/repos' }),
48
48
 
49
49
  namespacedDeployments() {
50
- return this.$store.getters['management/all'](WORKLOAD_TYPES.DEPLOYMENT).filter(dep => dep.metadata.namespace === UI_PLUGIN_NAMESPACE);
50
+ return this.$store.getters['management/all'](WORKLOAD_TYPES.DEPLOYMENT).filter((dep) => dep.metadata.namespace === UI_PLUGIN_NAMESPACE);
51
51
  },
52
52
 
53
53
  namespacedServices() {
54
- return this.$store.getters['management/all'](SERVICE).filter(svc => svc.metadata.namespace === UI_PLUGIN_NAMESPACE);
54
+ return this.$store.getters['management/all'](SERVICE).filter((svc) => svc.metadata.namespace === UI_PLUGIN_NAMESPACE);
55
55
  },
56
56
 
57
57
  catalogRows() {
@@ -79,7 +79,7 @@ export default {
79
79
  const keys = ['deployment', 'service', 'repo'];
80
80
 
81
81
  resources.forEach((resource, i) => {
82
- out[keys[i]] = resource?.filter(item => item.metadata?.labels?.[UI_PLUGIN_LABELS.CATALOG_IMAGE] === pluginName)[0];
82
+ out[keys[i]] = resource?.filter((item) => item.metadata?.labels?.[UI_PLUGIN_LABELS.CATALOG_IMAGE] === pluginName)[0];
83
83
  });
84
84
 
85
85
  if (!isEmpty(out?.deployment)) {
@@ -83,7 +83,7 @@ export default {
83
83
  }
84
84
  } else if (mode === 'rollback') {
85
85
  // Find the newest version once we remove the current version
86
- const versionNames = plugin.installableVersions.filter(v => v.version !== plugin.displayVersion);
86
+ const versionNames = plugin.installableVersions.filter((v) => v.version !== plugin.displayVersion);
87
87
 
88
88
  this.currentVersion = plugin.displayVersion;
89
89
 
@@ -93,7 +93,7 @@ export default {
93
93
  }
94
94
 
95
95
  // Make sure we have the version available
96
- const versionChart = plugin.installableVersions?.find(v => v.version === this.version);
96
+ const versionChart = plugin.installableVersions?.find((v) => v.version === this.version);
97
97
 
98
98
  if (!versionChart) {
99
99
  this.version = plugin.installableVersions?.[0]?.version;
@@ -117,7 +117,7 @@ export default {
117
117
  this.$emit('update', plugin.name, 'install');
118
118
 
119
119
  // Find the version that the user wants to install
120
- const version = plugin.versions?.find(v => v.version === this.version);
120
+ const version = plugin.versions?.find((v) => v.version === this.version);
121
121
 
122
122
  if (!version) {
123
123
  this.busy = false;
@@ -65,7 +65,7 @@ export default {
65
65
  async loadPluginVersionInfo(version) {
66
66
  const versionName = version || this.info.displayVersion;
67
67
 
68
- const isVersionNotCompatibleWithUi = this.info.versions?.find(v => v.version === versionName && !v.isCompatibleWithUi);
68
+ const isVersionNotCompatibleWithUi = this.info.versions?.find((v) => v.version === versionName && !v.isCompatibleWithUi);
69
69
 
70
70
  if (!this.info.chart || isVersionNotCompatibleWithUi) {
71
71
  return;
@@ -20,7 +20,7 @@ export default {
20
20
  if (this.$store.getters['management/schemaFor'](CATALOG.CLUSTER_REPO)) {
21
21
  const repos = await this.$store.dispatch('management/findAll', { type: CATALOG.CLUSTER_REPO, opt: { force: true } });
22
22
 
23
- this.defaultRepo = repos.find(r => r.name === UI_PLUGINS_REPO_NAME && r.spec.gitRepo === UI_PLUGINS_REPO_URL);
23
+ this.defaultRepo = repos.find((r) => r.name === UI_PLUGINS_REPO_NAME && r.spec.gitRepo === UI_PLUGINS_REPO_URL);
24
24
  }
25
25
 
26
26
  if (this.$store.getters['management/schemaFor'](UI_PLUGIN)) {
@@ -70,7 +70,7 @@ export default {
70
70
 
71
71
  if (!this.removeCRD) {
72
72
  // User does not want to uninstall the CRD, so remove the chart
73
- uninstall = uninstall.filter(chart => chart !== UI_PLUGIN_OPERATOR_CRD_CHART_NAME);
73
+ uninstall = uninstall.filter((chart) => chart !== UI_PLUGIN_OPERATOR_CRD_CHART_NAME);
74
74
  }
75
75
 
76
76
  for (let i = 0; i < uninstall.length; i++) {
@@ -93,7 +93,7 @@ export default {
93
93
 
94
94
  this.$store.dispatch('management/forgetType', UI_PLUGIN);
95
95
 
96
- await new Promise(resolve => setTimeout(resolve, 5000));
96
+ await new Promise((resolve) => setTimeout(resolve, 5000));
97
97
 
98
98
  this.$emit('done');
99
99