@rancher/shell 0.2.5 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. package/assets/styles/global/_button.scss +5 -1
  2. package/assets/styles/global/_columns.scss +4 -0
  3. package/assets/styles/global/_layout.scss +1 -2
  4. package/assets/styles/global/_select.scss +1 -4
  5. package/assets/styles/themes/_dark.scss +8 -4
  6. package/assets/styles/themes/_light.scss +9 -3
  7. package/assets/styles/themes/_suse.scss +1 -1
  8. package/assets/styles/vendor/vue-select.scss +4 -3
  9. package/assets/translations/en-us.yaml +682 -74
  10. package/assets/translations/zh-hans.yaml +554 -170
  11. package/chart/istio.vue +1 -1
  12. package/chart/monitoring/grafana/index.vue +1 -1
  13. package/chart/monitoring/index.vue +1 -1
  14. package/chart/monitoring/prometheus/index.vue +4 -4
  15. package/chart/monitoring/steps/uninstall-v1.vue +2 -2
  16. package/cloud-credential/azure.vue +23 -0
  17. package/cloud-credential/harvester.vue +25 -62
  18. package/cloud-credential/pnap.vue +80 -0
  19. package/components/AdvancedSection.vue +9 -2
  20. package/components/Alert.vue +2 -2
  21. package/components/AlertTable.vue +1 -1
  22. package/components/AssignTo.vue +1 -1
  23. package/components/AsyncButton.vue +2 -2
  24. package/components/BrandImage.vue +1 -1
  25. package/components/ButtonDropdown.vue +0 -2
  26. package/components/ButtonGroup.vue +2 -1
  27. package/components/ClusterProviderIcon.vue +2 -2
  28. package/components/Collapse.vue +6 -2
  29. package/components/CollapsibleCard.vue +2 -3
  30. package/components/ConsumptionGauge.vue +4 -4
  31. package/components/ContainerResourceLimit.vue +1 -1
  32. package/components/CountBox.vue +1 -1
  33. package/components/CountGauge.vue +1 -1
  34. package/components/CruResource.vue +43 -5
  35. package/components/DashboardMetrics.vue +2 -2
  36. package/components/DetailTop.vue +58 -3
  37. package/components/DisableAuthProviderModal.vue +106 -0
  38. package/components/DraggableZone.vue +181 -0
  39. package/components/ExplorerMembers.vue +253 -30
  40. package/components/ExplorerProjectsNamespaces.vue +82 -38
  41. package/components/FixedBanner.vue +6 -6
  42. package/components/GlobalRoleBindings.vue +6 -6
  43. package/components/GradientBox.vue +2 -2
  44. package/components/GrowlManager.vue +3 -3
  45. package/components/IconMessage.vue +4 -4
  46. package/components/IconOrSvg.vue +149 -0
  47. package/components/Import.vue +5 -5
  48. package/components/InputOrDisplay.vue +1 -1
  49. package/components/KeyValueView.vue +1 -1
  50. package/components/LabelValue.vue +1 -1
  51. package/components/LogItem.vue +69 -0
  52. package/components/ModalWithCard.vue +1 -1
  53. package/components/MoveModal.vue +1 -1
  54. package/components/PercentageBar.vue +2 -2
  55. package/components/PodSecurityAdmission.vue +302 -0
  56. package/components/PromptChangePassword.vue +1 -1
  57. package/components/PromptModal.vue +2 -1
  58. package/components/PromptRemove.vue +2 -2
  59. package/components/PromptRestore.vue +13 -13
  60. package/components/Questions/Question.js +1 -1
  61. package/components/ResourceCancelModal.vue +3 -3
  62. package/components/ResourceDetail/Masthead.vue +55 -3
  63. package/components/ResourceDetail/index.vue +12 -5
  64. package/components/ResourceList/Masthead.vue +12 -2
  65. package/components/ResourceList/ResourceLoadingIndicator.vue +12 -2
  66. package/components/ResourceList/index.vue +53 -12
  67. package/components/ResourceList/resource-list.config.js +7 -0
  68. package/components/ResourceSummary.vue +4 -4
  69. package/components/ResourceTable.vue +31 -6
  70. package/components/RoleBindings.vue +19 -19
  71. package/components/SimpleBox.vue +6 -2
  72. package/components/SingleClusterInfo.vue +5 -5
  73. package/components/SortableTable/THead.vue +20 -6
  74. package/components/SortableTable/actions.js +4 -2
  75. package/components/SortableTable/index.vue +30 -19
  76. package/components/SortableTable/selection.js +2 -2
  77. package/components/Tabbed/index.vue +20 -15
  78. package/components/TableSparkLine.vue +1 -1
  79. package/components/TypeDescription.vue +1 -1
  80. package/components/Wizard.vue +1 -1
  81. package/components/YamlEditor.vue +6 -6
  82. package/components/__tests__/ApplicationCard.test.ts +27 -0
  83. package/components/__tests__/AsyncButton.test.ts +140 -0
  84. package/components/__tests__/BackLink.test.ts +33 -0
  85. package/components/__tests__/ButtonGroup.test.ts +124 -0
  86. package/components/__tests__/ClusterBadge.test.ts +32 -0
  87. package/components/__tests__/Collapse.spec.ts +44 -0
  88. package/components/__tests__/CollapsibleCard.test.ts +64 -0
  89. package/components/__tests__/ConsumptionGauge.test.ts +88 -0
  90. package/components/__tests__/CruResource.test.ts +6 -5
  91. package/components/__tests__/FixedBanner.test.ts +129 -0
  92. package/components/__tests__/GrowlManager.test.ts +147 -0
  93. package/components/__tests__/NamespaceFilter.test.ts +221 -0
  94. package/components/__tests__/PercentageBar.test.ts +32 -0
  95. package/components/__tests__/PodSecurityAdmission.test.ts +398 -0
  96. package/components/__tests__/SimpleBox.spec.ts +28 -0
  97. package/components/auth/AuthBanner.vue +20 -10
  98. package/components/auth/RoleDetailEdit.vue +41 -30
  99. package/components/auth/SelectPrincipal.vue +45 -5
  100. package/components/auth/login/ldap.vue +3 -0
  101. package/components/cards/ApplicationCard.vue +10 -5
  102. package/components/fleet/FleetBundleResources.vue +8 -8
  103. package/components/fleet/FleetClusters.vue +10 -10
  104. package/components/fleet/FleetRepos.vue +5 -5
  105. package/components/fleet/FleetResources.vue +6 -6
  106. package/components/fleet/FleetSummary.vue +5 -5
  107. package/components/fleet/ResourcesSummary.vue +1 -1
  108. package/components/form/ArrayList.vue +3 -35
  109. package/components/form/ArrayListGrouped.vue +14 -5
  110. package/components/form/ArrayListSelect.vue +8 -8
  111. package/components/form/BannerSettings.vue +6 -6
  112. package/components/form/ChangePassword.vue +3 -3
  113. package/components/form/Error.vue +10 -2
  114. package/components/form/FileSelector.vue +3 -3
  115. package/components/form/Footer.vue +1 -1
  116. package/components/form/GithubPicker.vue +4 -4
  117. package/components/form/KeyValue.vue +41 -9
  118. package/components/form/LabeledSelect.vue +5 -2
  119. package/components/form/Labels.vue +46 -16
  120. package/components/form/MatchExpressions.vue +1 -1
  121. package/components/form/Members/ClusterPermissionsEditor.vue +28 -28
  122. package/components/form/Members/MembershipEditor.vue +14 -14
  123. package/components/form/NameNsDescription.vue +1 -1
  124. package/components/form/NodeAffinity.vue +1 -1
  125. package/components/form/NodeScheduling.vue +1 -1
  126. package/components/form/Password.vue +3 -3
  127. package/components/form/PodAffinity.vue +1 -1
  128. package/components/form/Probe.vue +3 -3
  129. package/components/form/ProjectMemberEditor.vue +1 -1
  130. package/components/form/ResourceQuota/Project.vue +6 -6
  131. package/components/form/ResourceQuota/shared.js +12 -12
  132. package/components/form/ResourceTabs/index.vue +1 -6
  133. package/components/form/SecretSelector.vue +1 -1
  134. package/components/form/Security.vue +8 -7
  135. package/components/form/Select.vue +7 -2
  136. package/components/form/SelectOrCreateAuthSecret.vue +22 -29
  137. package/components/form/ServicePorts.vue +8 -0
  138. package/components/form/SimpleSecretSelector.vue +1 -1
  139. package/components/form/Taints.vue +1 -1
  140. package/components/form/UnitInput.vue +7 -7
  141. package/components/form/ValueFromResource.vue +1 -1
  142. package/components/form/WorkloadPorts.vue +8 -2
  143. package/components/form/__tests__/ArrayList.test.ts +74 -0
  144. package/components/form/__tests__/ArrayListGrouped.test.ts +6 -4
  145. package/components/formatter/AppSummaryGraph.vue +4 -4
  146. package/components/formatter/BadgeStateFormatter.vue +2 -2
  147. package/components/formatter/Checked.vue +2 -2
  148. package/components/formatter/ClusterLink.vue +8 -3
  149. package/components/formatter/Date.vue +1 -1
  150. package/components/formatter/DelayedValue.vue +1 -1
  151. package/components/formatter/Endpoints.vue +1 -1
  152. package/components/formatter/FleetSummaryGraph.vue +4 -4
  153. package/components/formatter/IconIsDefault.vue +3 -3
  154. package/components/formatter/IconText.vue +4 -4
  155. package/components/formatter/ImagePercentageBar.vue +4 -4
  156. package/components/formatter/IngressFullPath.vue +1 -1
  157. package/components/formatter/InternalExternalIP.vue +11 -8
  158. package/components/formatter/LinkDetail.vue +3 -3
  159. package/components/formatter/List.vue +1 -1
  160. package/components/formatter/ListLink.vue +1 -1
  161. package/components/formatter/ListLinkDetail.vue +1 -1
  162. package/components/formatter/LiveDate.vue +3 -3
  163. package/components/formatter/LiveDuration.vue +78 -0
  164. package/components/formatter/LivePodRestarts.vue +1 -1
  165. package/components/formatter/Number.vue +1 -1
  166. package/components/formatter/Percentage.vue +2 -2
  167. package/components/formatter/PercentageBar.vue +3 -3
  168. package/components/formatter/PodImages.vue +1 -1
  169. package/components/formatter/Principal.vue +1 -1
  170. package/components/formatter/PrincipalGroupBindings.vue +2 -2
  171. package/components/formatter/QualityText.vue +1 -1
  172. package/components/formatter/ReceiverIcons.vue +2 -2
  173. package/components/formatter/Scale.vue +1 -1
  174. package/components/formatter/ScanResult.vue +1 -1
  175. package/components/formatter/SecretData.vue +1 -1
  176. package/components/formatter/ServiceType.vue +1 -1
  177. package/components/formatter/Shortened.vue +1 -1
  178. package/components/formatter/VerticalScroll.vue +2 -2
  179. package/components/formatter/VirtualServiceGateways.vue +3 -3
  180. package/components/formatter/Weight.vue +2 -2
  181. package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
  182. package/components/formatter/WorkloadHealthScale.vue +7 -5
  183. package/components/formatter/__tests__/Date.test.ts +60 -0
  184. package/components/formatter/__tests__/LinkDetail.test.ts +72 -0
  185. package/components/formatter/__tests__/LiveDate.test.ts +84 -0
  186. package/components/formatter/__tests__/Si.test.ts +35 -0
  187. package/components/graph/LinePlot.vue +1 -1
  188. package/components/graph/ProgressArc.vue +5 -5
  189. package/components/nav/GlobalLoading.vue +1 -1
  190. package/components/nav/Header.vue +6 -4
  191. package/components/nav/Jump.vue +3 -3
  192. package/components/nav/NamespaceFilter.vue +200 -68
  193. package/components/nav/TopLevelMenu.vue +24 -21
  194. package/components/nav/Type.vue +1 -1
  195. package/components/nav/WindowManager/ChartReadme.vue +1 -1
  196. package/components/nav/WindowManager/ContainerLogs.vue +84 -127
  197. package/components/nav/WindowManager/ContainerShell.vue +28 -7
  198. package/components/nav/WindowManager/KubectlShell.vue +6 -6
  199. package/components/nav/WindowManager/MachineSsh.vue +1 -1
  200. package/components/nav/WindowManager/Window.vue +2 -0
  201. package/components/nav/WindowManager/index.vue +206 -25
  202. package/config/elemental-types.js +9 -0
  203. package/config/features.js +2 -0
  204. package/config/home-links.js +4 -1
  205. package/config/labels-annotations.js +19 -19
  206. package/config/pod-security-admission.ts +82 -0
  207. package/config/product/apps.js +5 -5
  208. package/config/product/auth.js +22 -21
  209. package/config/product/cis.js +24 -24
  210. package/config/product/explorer.js +25 -24
  211. package/config/product/fleet.js +7 -7
  212. package/config/product/gatekeeper.js +7 -7
  213. package/config/product/istio.js +7 -7
  214. package/config/product/legacy.js +21 -21
  215. package/config/product/logging.js +90 -90
  216. package/config/product/manager.js +19 -15
  217. package/config/product/monitoring.js +36 -36
  218. package/config/product/multi-cluster-apps.js +24 -24
  219. package/config/product/settings.js +42 -42
  220. package/config/secret.js +0 -1
  221. package/config/settings.ts +39 -22
  222. package/config/table-headers.js +70 -52
  223. package/config/types.js +11 -8
  224. package/config/uiplugins.js +4 -4
  225. package/content/docs/zh-hans/getting-started.md +113 -137
  226. package/content/docs/zh-hans/whats-new.md +8 -46
  227. package/creators/app/app.package.json +4 -1
  228. package/creators/app/{.eslintignore → files/.eslintignore} +0 -0
  229. package/creators/app/{.eslintrc.js → files/.eslintrc.js} +0 -0
  230. package/creators/app/{.vscode → files/.vscode}/settings.json +0 -0
  231. package/creators/app/{babel.config.js → files/babel.config.js} +0 -0
  232. package/creators/app/{nuxt.config.js → files/nuxt.config.js} +0 -0
  233. package/creators/app/{tsconfig.json → files/tsconfig.json} +2 -1
  234. package/creators/app/init +16 -17
  235. package/creators/app/package.json +7 -1
  236. package/creators/pkg/{babel.config.js → files/babel.config.js} +0 -0
  237. package/creators/pkg/{index.ts → files/index.ts} +0 -0
  238. package/creators/pkg/{tsconfig.json → files/tsconfig.json} +13 -12
  239. package/creators/pkg/{vue.config.js → files/vue.config.js} +0 -0
  240. package/creators/pkg/init +1 -1
  241. package/creators/pkg/package.json +2 -2
  242. package/creators/update/init +56 -0
  243. package/creators/update/package.json +20 -0
  244. package/creators/update/upgrade +56 -0
  245. package/detail/catalog.cattle.io.app.vue +1 -1
  246. package/detail/cis.cattle.io.clusterscan.vue +6 -6
  247. package/detail/configmap.vue +1 -1
  248. package/detail/constraints.gatekeeper.sh.constraint.vue +1 -1
  249. package/detail/fleet.cattle.io.bundle.vue +5 -5
  250. package/detail/fleet.cattle.io.gitrepo.vue +5 -5
  251. package/detail/helm.cattle.io.projecthelmchart.vue +1 -1
  252. package/detail/management.cattle.io.user.vue +3 -3
  253. package/detail/namespace.vue +13 -13
  254. package/detail/node.vue +2 -2
  255. package/detail/pod.vue +2 -2
  256. package/detail/provisioning.cattle.io.cluster.vue +47 -10
  257. package/detail/secret.vue +2 -2
  258. package/detail/service.vue +2 -9
  259. package/detail/workload/index.vue +1 -2
  260. package/dialog/AddClusterMemberDialog.vue +23 -29
  261. package/dialog/AddCustomBadgeDialog.vue +4 -4
  262. package/dialog/AddProjectMemberDialog.vue +81 -30
  263. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  264. package/dialog/DiagnosticTimingsDialog.vue +9 -8
  265. package/dialog/DrainNode.vue +56 -60
  266. package/dialog/ForceMachineRemoveDialog.vue +6 -8
  267. package/dialog/GenericPrompt.vue +16 -21
  268. package/dialog/RollbackWorkloadDialog.vue +22 -53
  269. package/dialog/RotateCertificatesDialog.vue +9 -11
  270. package/dialog/RotateEncryptionKeyDialog.vue +6 -10
  271. package/dialog/SaveAsRKETemplateDialog.vue +6 -14
  272. package/dialog/ScaleMachineDownDialog.vue +2 -2
  273. package/dialog/ScalePoolDownDialog.vue +121 -0
  274. package/edit/__tests__/management.cattle.io.setting.test.ts +4 -4
  275. package/edit/auth/azuread.vue +18 -18
  276. package/edit/auth/github.vue +10 -2
  277. package/edit/auth/googleoauth.vue +10 -1
  278. package/edit/auth/ldap/index.vue +14 -4
  279. package/edit/auth/oidc.vue +13 -3
  280. package/edit/auth/saml.vue +14 -4
  281. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +2 -2
  282. package/edit/autoscaling.horizontalpodautoscaler/index.vue +1 -1
  283. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +1 -1
  284. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  285. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +2 -2
  286. package/edit/cis.cattle.io.clusterscan.vue +2 -2
  287. package/edit/cloudcredential.vue +3 -7
  288. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -1
  289. package/edit/fleet.cattle.io.clustergroup.vue +3 -3
  290. package/edit/fleet.cattle.io.gitrepo.vue +9 -9
  291. package/edit/group.principal.vue +2 -2
  292. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  293. package/edit/logging-flow/Match.vue +39 -8
  294. package/edit/logging-flow/index.vue +28 -5
  295. package/edit/logging.banzaicloud.io.output/providers/datadog.vue +1 -1
  296. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  297. package/edit/logging.banzaicloud.io.output/providers/gcs.vue +1 -1
  298. package/edit/logging.banzaicloud.io.output/providers/gelf.vue +1 -1
  299. package/edit/logging.banzaicloud.io.output/providers/kafka.vue +1 -1
  300. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  301. package/edit/logging.banzaicloud.io.output/providers/loki.vue +1 -1
  302. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +213 -0
  303. package/edit/logging.banzaicloud.io.output/providers/redis.vue +142 -0
  304. package/edit/logging.banzaicloud.io.output/providers/s3.vue +1 -1
  305. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  306. package/edit/logging.banzaicloud.io.output/providers/syslog.vue +1 -1
  307. package/edit/management.cattle.io.fleetworkspace.vue +1 -1
  308. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +107 -0
  309. package/edit/management.cattle.io.project.vue +11 -4
  310. package/edit/management.cattle.io.projectroletemplatebinding.vue +5 -5
  311. package/edit/management.cattle.io.setting.vue +6 -3
  312. package/edit/management.cattle.io.user.vue +11 -5
  313. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +33 -17
  314. package/edit/monitoring.coreos.com.alertmanagerconfig/tls.vue +1 -1
  315. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  316. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +5 -5
  317. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +3 -3
  318. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +3 -3
  319. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +4 -4
  320. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +14 -6
  321. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  322. package/edit/monitoring.coreos.com.receiver/index.vue +1 -1
  323. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  324. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +1 -1
  325. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +1 -1
  326. package/edit/monitoring.coreos.com.receiver/types/webhook.vue +1 -1
  327. package/edit/monitoring.coreos.com.route.vue +1 -1
  328. package/edit/namespace.vue +18 -4
  329. package/edit/networking.istio.io.destinationrule/LoadBalancer.vue +1 -1
  330. package/edit/networking.k8s.io.ingress/Certificate.vue +1 -0
  331. package/edit/networking.k8s.io.ingress/Certificates.vue +3 -3
  332. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  333. package/edit/networking.k8s.io.ingress/IngressClass.vue +9 -7
  334. package/edit/networking.k8s.io.ingress/Rule.vue +1 -1
  335. package/edit/networking.k8s.io.ingress/RulePath.vue +17 -11
  336. package/edit/networking.k8s.io.ingress/Rules.vue +7 -7
  337. package/edit/networking.k8s.io.ingress/index.vue +8 -6
  338. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +1 -1
  339. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  340. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +1 -1
  341. package/edit/networking.k8s.io.networkpolicy/index.vue +5 -5
  342. package/edit/persistentvolume/index.vue +30 -27
  343. package/edit/persistentvolume/plugins/awsElasticBlockStore.vue +1 -1
  344. package/edit/persistentvolume/plugins/azureDisk.vue +1 -1
  345. package/edit/persistentvolume/plugins/azureFile.vue +1 -1
  346. package/edit/persistentvolume/plugins/cephfs.vue +31 -31
  347. package/edit/persistentvolume/plugins/cinder.vue +1 -1
  348. package/edit/persistentvolume/plugins/csi.vue +104 -64
  349. package/edit/persistentvolume/plugins/fc.vue +21 -21
  350. package/edit/persistentvolume/plugins/flexVolume.vue +2 -2
  351. package/edit/persistentvolume/plugins/flocker.vue +1 -1
  352. package/edit/persistentvolume/plugins/gcePersistentDisk.vue +1 -1
  353. package/edit/persistentvolume/plugins/glusterfs.vue +1 -1
  354. package/edit/persistentvolume/plugins/hostPath.vue +1 -1
  355. package/edit/persistentvolume/plugins/iscsi.vue +47 -47
  356. package/edit/persistentvolume/plugins/local.vue +1 -1
  357. package/edit/persistentvolume/plugins/longhorn.vue +2 -2
  358. package/edit/persistentvolume/plugins/nfs.vue +1 -1
  359. package/edit/persistentvolume/plugins/photonPersistentDisk.vue +1 -1
  360. package/edit/persistentvolume/plugins/portworxVolume.vue +1 -1
  361. package/edit/persistentvolume/plugins/quobyte.vue +1 -1
  362. package/edit/persistentvolume/plugins/rbd.vue +41 -41
  363. package/edit/persistentvolume/plugins/scaleIO.vue +1 -1
  364. package/edit/persistentvolume/plugins/storageos.vue +1 -1
  365. package/edit/persistentvolume/plugins/vsphereVolume.vue +1 -1
  366. package/edit/persistentvolumeclaim.vue +78 -75
  367. package/edit/provisioning.cattle.io.cluster/DrainOptions.vue +1 -1
  368. package/edit/provisioning.cattle.io.cluster/MachinePool.vue +12 -8
  369. package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +10 -1
  370. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +87 -27
  371. package/edit/provisioning.cattle.io.cluster/S3Config.vue +1 -1
  372. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +3 -6
  373. package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.tests.ts +1 -1
  374. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +93 -0
  375. package/edit/provisioning.cattle.io.cluster/import.vue +3 -3
  376. package/edit/provisioning.cattle.io.cluster/index.vue +31 -8
  377. package/edit/provisioning.cattle.io.cluster/rke2.vue +458 -164
  378. package/edit/resources.cattle.io.backup.vue +2 -2
  379. package/edit/secret/generic.vue +1 -0
  380. package/edit/secret/index.vue +3 -7
  381. package/edit/service.vue +3 -1
  382. package/edit/storage.k8s.io.storageclass/index.vue +101 -17
  383. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +114 -0
  384. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/no-provisioner.vue +1 -1
  385. package/edit/token.vue +1 -1
  386. package/edit/ui.cattle.io.navlink.vue +8 -8
  387. package/edit/workload/Job.vue +3 -3
  388. package/edit/workload/Upgrading.vue +1 -1
  389. package/edit/workload/VolumeClaimTemplate.vue +1 -1
  390. package/edit/workload/__tests__/index.test.ts +98 -0
  391. package/edit/workload/index.vue +61 -11
  392. package/edit/workload/mixins/workload.js +128 -91
  393. package/edit/workload/storage/ContainerMountPaths.vue +1 -11
  394. package/edit/workload/storage/Mount.vue +1 -1
  395. package/edit/workload/storage/azureDisk.vue +1 -1
  396. package/edit/workload/storage/azureFile.vue +1 -1
  397. package/edit/workload/storage/csi/index.vue +1 -1
  398. package/edit/workload/storage/emptyDir.vue +88 -0
  399. package/edit/workload/storage/ephemeralVolume/index.vue +2 -2
  400. package/edit/workload/storage/gcePersistentDisk.vue +1 -1
  401. package/edit/workload/storage/hostPath.vue +1 -1
  402. package/edit/workload/storage/index.vue +8 -0
  403. package/edit/workload/storage/nfs.vue +1 -1
  404. package/edit/workload/storage/persistentVolumeClaim/index.vue +2 -2
  405. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +1 -1
  406. package/edit/workload/storage/secret.vue +1 -1
  407. package/edit/workload/storage/vsphereVolume.vue +1 -1
  408. package/layouts/default.vue +132 -58
  409. package/list/__tests__/workload.test.ts +53 -0
  410. package/list/catalog.cattle.io.app.vue +1 -0
  411. package/list/cis.cattle.io.clusterscan.vue +1 -0
  412. package/list/fleet.cattle.io.bundle.vue +5 -6
  413. package/list/fleet.cattle.io.cluster.vue +6 -3
  414. package/list/fleet.cattle.io.clusterregistrationtoken.vue +5 -6
  415. package/list/fleet.cattle.io.gitrepo.vue +5 -10
  416. package/list/group.principal.vue +8 -8
  417. package/list/helm.cattle.io.projecthelmchart.vue +2 -6
  418. package/list/logging.banzaicloud.io.clusterflow.vue +4 -1
  419. package/list/logging.banzaicloud.io.flow.vue +6 -5
  420. package/list/management.cattle.io.cluster.vue +1 -0
  421. package/list/management.cattle.io.feature.vue +4 -5
  422. package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +47 -0
  423. package/list/management.cattle.io.setting.vue +2 -2
  424. package/list/management.cattle.io.user.vue +4 -10
  425. package/list/monitoring.coreos.com.alertmanagerconfig.vue +2 -7
  426. package/list/node.vue +9 -6
  427. package/list/persistentvolume.vue +3 -3
  428. package/list/persistentvolumeclaim.vue +3 -4
  429. package/list/provisioning.cattle.io.cluster.vue +21 -22
  430. package/list/service.vue +6 -14
  431. package/list/workload.vue +43 -38
  432. package/machine-config/amazonec2.vue +1 -1
  433. package/machine-config/azure.vue +429 -60
  434. package/machine-config/pnap.vue +288 -0
  435. package/mixins/__tests__/create-edit-view.test.ts +1 -1
  436. package/mixins/auth-config.js +1 -3
  437. package/mixins/browser-tab-visibility.js +8 -14
  438. package/mixins/chart.js +15 -15
  439. package/mixins/create-edit-view/impl.js +4 -0
  440. package/mixins/create-edit-view/index.js +9 -7
  441. package/mixins/form-validation.js +1 -1
  442. package/mixins/labeled-form-element.ts +6 -6
  443. package/mixins/resource-fetch-namespaced.js +98 -0
  444. package/mixins/resource-fetch.js +82 -48
  445. package/mixins/resource-manager.js +2 -24
  446. package/models/apps.controllerrevision.js +7 -0
  447. package/models/apps.daemonset.js +18 -0
  448. package/models/apps.deployment.js +44 -0
  449. package/models/apps.replicaset.js +7 -0
  450. package/models/apps.statefulset.js +18 -0
  451. package/models/autoscaling.horizontalpodautoscaler.js +5 -5
  452. package/models/batch.cronjob.js +15 -15
  453. package/models/batch.job.js +15 -0
  454. package/models/catalog.cattle.io.app.js +6 -6
  455. package/models/catalog.cattle.io.clusterrepo.js +7 -7
  456. package/models/catalog.cattle.io.operation.js +5 -5
  457. package/models/chart.js +4 -4
  458. package/models/cis.cattle.io.clusterscan.js +10 -10
  459. package/models/cluster/node.js +46 -38
  460. package/models/cluster.x-k8s.io.machine.js +39 -17
  461. package/models/cluster.x-k8s.io.machinedeployment.js +12 -2
  462. package/models/constraints.gatekeeper.sh.constraint.js +1 -1
  463. package/models/etcdbackup.js +4 -4
  464. package/models/event.js +7 -0
  465. package/models/fleet.cattle.io.cluster.js +15 -15
  466. package/models/fleet.cattle.io.clustergroup.js +1 -1
  467. package/models/fleet.cattle.io.gitrepo.js +15 -15
  468. package/models/group.principal.js +1 -1
  469. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  470. package/models/logging.banzaicloud.io.flow.js +6 -2
  471. package/models/logging.banzaicloud.io.output.js +15 -3
  472. package/models/management.cattle.io.authconfig.js +4 -4
  473. package/models/management.cattle.io.cluster.js +10 -10
  474. package/models/management.cattle.io.clusterroletemplatebinding.js +9 -9
  475. package/models/management.cattle.io.globalrole.js +26 -5
  476. package/models/management.cattle.io.node.js +46 -11
  477. package/models/management.cattle.io.nodepool.js +3 -3
  478. package/models/management.cattle.io.nodetemplate.js +21 -21
  479. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +4 -0
  480. package/models/management.cattle.io.project.js +32 -13
  481. package/models/management.cattle.io.projectroletemplatebinding.js +6 -6
  482. package/models/management.cattle.io.roletemplate.js +54 -31
  483. package/models/management.cattle.io.setting.js +1 -1
  484. package/models/management.cattle.io.user.js +41 -5
  485. package/models/monitoring.coreos.com.alertmanagerconfig.js +4 -4
  486. package/models/monitoring.coreos.com.receiver.js +7 -7
  487. package/models/monitoring.coreos.com.route.js +2 -2
  488. package/models/namespace.js +55 -5
  489. package/models/persistentvolume.js +14 -2
  490. package/models/persistentvolumeclaim.js +4 -4
  491. package/models/pod.js +25 -10
  492. package/models/projectroletemplatebinding.js +7 -0
  493. package/models/provisioning.cattle.io.cluster.js +89 -38
  494. package/models/rbac.authorization.k8s.io.role.js +4 -4
  495. package/models/rke-machine.cattle.io.pnapmachinetemplate.js +15 -0
  496. package/models/rke.cattle.io.etcdsnapshot.js +4 -4
  497. package/models/service.js +29 -28
  498. package/models/storage.k8s.io.storageclass.js +41 -26
  499. package/models/workload.js +66 -35
  500. package/nuxt.config.js +59 -34
  501. package/package.json +7 -7
  502. package/pages/about.vue +15 -3
  503. package/pages/account/index.vue +1 -1
  504. package/pages/auth/login.vue +37 -7
  505. package/pages/auth/setup.vue +11 -11
  506. package/pages/c/_cluster/_product/_resource/_id.vue +2 -2
  507. package/pages/c/_cluster/apps/charts/chart.vue +4 -4
  508. package/pages/c/_cluster/apps/charts/index.vue +21 -20
  509. package/pages/c/_cluster/apps/charts/install.vue +73 -36
  510. package/pages/c/_cluster/auth/config/_id.vue +8 -2
  511. package/pages/c/_cluster/auth/config/index.vue +8 -6
  512. package/pages/c/_cluster/auth/group.principal/assign-edit.vue +1 -1
  513. package/pages/c/_cluster/auth/roles/_resource/_id.vue +2 -2
  514. package/pages/c/_cluster/auth/roles/index.vue +5 -7
  515. package/pages/c/_cluster/explorer/EventsTable.vue +8 -8
  516. package/pages/c/_cluster/explorer/index.vue +26 -20
  517. package/pages/c/_cluster/explorer/tools/index.vue +4 -4
  518. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +2 -2
  519. package/pages/c/_cluster/fleet/index.vue +10 -10
  520. package/pages/c/_cluster/gatekeeper/index.vue +1 -1
  521. package/pages/c/_cluster/legacy/index.vue +1 -1
  522. package/pages/c/_cluster/longhorn/index.vue +2 -2
  523. package/pages/c/_cluster/mcapps/index.vue +1 -1
  524. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +15 -4
  525. package/pages/c/_cluster/monitoring/index.vue +1 -1
  526. package/pages/c/_cluster/navlinks/_group.vue +1 -1
  527. package/pages/c/_cluster/neuvector/index.vue +2 -2
  528. package/pages/c/_cluster/settings/banners.vue +30 -30
  529. package/pages/c/_cluster/settings/brand.vue +9 -9
  530. package/pages/c/_cluster/settings/links.vue +6 -6
  531. package/pages/c/_cluster/settings/performance.vue +48 -2
  532. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +1 -1
  533. package/pages/c/_cluster/uiplugins/InstallDialog.vue +1 -1
  534. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +59 -9
  535. package/pages/c/_cluster/uiplugins/index.vue +30 -4
  536. package/pages/diagnostic.vue +5 -4
  537. package/pages/home.vue +105 -30
  538. package/pages/prefs.vue +23 -12
  539. package/pages/rio/mesh.vue +5 -5
  540. package/pages/support/index.vue +7 -7
  541. package/pkg/dynamic-importer.lib.js +8 -0
  542. package/pkg/vue.config.js +14 -1
  543. package/plugins/dashboard-store/__tests__/mutations.spec.js +406 -0
  544. package/plugins/dashboard-store/actions.js +32 -25
  545. package/plugins/dashboard-store/getters.js +50 -33
  546. package/plugins/dashboard-store/mutations.js +134 -28
  547. package/plugins/dashboard-store/normalize.js +1 -1
  548. package/plugins/dashboard-store/resource-class.js +121 -141
  549. package/plugins/steve/actions.js +30 -0
  550. package/plugins/steve/caches/resourceCache.js +60 -0
  551. package/plugins/steve/getters.js +44 -1
  552. package/plugins/steve/mutations.js +97 -36
  553. package/plugins/steve/resourceWatcher.js +277 -0
  554. package/plugins/steve/schema.utils.js +25 -0
  555. package/plugins/steve/subscribe.js +292 -119
  556. package/plugins/steve/worker/index.js +17 -0
  557. package/plugins/steve/worker/web-worker.advanced.js +302 -0
  558. package/plugins/steve/{web-worker.steve-sub-worker.js → worker/web-worker.basic.js} +6 -47
  559. package/promptRemove/management.cattle.io.project.vue +1 -1
  560. package/promptRemove/mixin/roleDeletionCheck.js +7 -7
  561. package/promptRemove/pod.vue +2 -2
  562. package/rancher-components/components/BadgeState/BadgeState.spec.ts +12 -0
  563. package/rancher-components/components/BadgeState/BadgeState.vue +111 -0
  564. package/rancher-components/components/BadgeState/index.ts +1 -0
  565. package/rancher-components/components/Banner/Banner.test.ts +57 -0
  566. package/rancher-components/components/Banner/Banner.vue +242 -0
  567. package/rancher-components/components/Banner/index.ts +1 -0
  568. package/rancher-components/components/Card/Card.test.ts +37 -0
  569. package/rancher-components/components/Card/Card.vue +166 -0
  570. package/rancher-components/components/Card/index.ts +1 -0
  571. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +68 -0
  572. package/rancher-components/components/Form/Checkbox/Checkbox.vue +418 -0
  573. package/rancher-components/components/Form/Checkbox/index.ts +1 -0
  574. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +23 -0
  575. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +355 -0
  576. package/rancher-components/components/Form/LabeledInput/index.ts +1 -0
  577. package/rancher-components/components/Form/Radio/RadioButton.vue +276 -0
  578. package/rancher-components/components/Form/Radio/RadioGroup.vue +253 -0
  579. package/rancher-components/components/Form/Radio/index.ts +2 -0
  580. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +169 -0
  581. package/rancher-components/components/Form/TextArea/index.ts +1 -0
  582. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +94 -0
  583. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +149 -0
  584. package/rancher-components/components/Form/ToggleSwitch/index.ts +1 -0
  585. package/rancher-components/components/Form/index.ts +5 -0
  586. package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +151 -0
  587. package/rancher-components/components/LabeledTooltip/index.ts +1 -0
  588. package/rancher-components/components/StringList/StringList.test.ts +483 -0
  589. package/rancher-components/components/StringList/StringList.vue +611 -0
  590. package/rancher-components/components/StringList/index.ts +1 -0
  591. package/scripts/publish-shell.sh +38 -5
  592. package/scripts/record-deps.js +37 -0
  593. package/scripts/test-plugins-build.sh +19 -7
  594. package/scripts/typegen.sh +84 -0
  595. package/static/loading-indicator.html +1 -1
  596. package/store/action-menu.js +3 -3
  597. package/store/auth.js +4 -4
  598. package/store/aws.js +4 -4
  599. package/store/catalog.js +22 -22
  600. package/store/index.js +58 -7
  601. package/store/plugins.js +2 -19
  602. package/store/pnap.js +128 -0
  603. package/store/prefs.js +13 -3
  604. package/store/type-map.js +101 -44
  605. package/store/uiplugins.ts +2 -2
  606. package/store/wm.js +10 -0
  607. package/types/pod-security-admission.ts +36 -0
  608. package/types/shell/index.d.ts +3159 -0
  609. package/types/vue-shim.d +20 -0
  610. package/utils/__tests__/object.test.ts +17 -1
  611. package/utils/__tests__/pod-security-admission.test.ts +61 -0
  612. package/utils/alertmanagerconfig.js +6 -6
  613. package/utils/async.ts +36 -0
  614. package/utils/color.js +45 -0
  615. package/utils/crypto/browserHashUtils.js +18 -0
  616. package/utils/dynamic-importer.js +8 -0
  617. package/utils/gc/gc-types.ts +1 -1
  618. package/utils/install-redirect.js +1 -1
  619. package/utils/object.js +26 -2
  620. package/utils/parse-externalid.js +5 -5
  621. package/utils/pod-security-admission.ts +39 -0
  622. package/utils/socket.js +61 -24
  623. package/utils/string.js +2 -0
  624. package/utils/svg-filter.js +301 -0
  625. package/utils/time.js +55 -0
  626. package/utils/validators/cidr.js +4 -0
  627. package/utils/validators/formRules/__tests__/index.test.ts +26 -6
  628. package/utils/validators/formRules/index.ts +14 -0
  629. package/config/product/harvester-manager.js +0 -162
  630. package/creators/pkg/nuxt.config.js +0 -6
  631. package/edit/harvesterhci.io.management.cluster.vue +0 -153
  632. package/list/harvesterhci.io.management.cluster.vue +0 -241
  633. package/machine-config/harvester.vue +0 -693
  634. package/models/harvesterhci.io.management.cluster.js +0 -228
  635. package/pages/c/_cluster/harvesterManager/index.vue +0 -24
@@ -14,26 +14,26 @@ export default class ClusterNode extends SteveModel {
14
14
  const normanAction = this.norman?.actions || {};
15
15
 
16
16
  const cordon = {
17
- action: 'cordon',
18
- enabled: !!normanAction.cordon,
19
- icon: 'icon icon-fw icon-pause',
20
- label: 'Cordon',
21
- total: 1,
22
- bulkable: true
17
+ action: 'cordon',
18
+ enabled: !!normanAction.cordon,
19
+ icon: 'icon icon-fw icon-pause',
20
+ label: 'Cordon',
21
+ total: 1,
22
+ bulkable: true
23
23
  };
24
24
 
25
25
  const uncordon = {
26
- action: 'uncordon',
27
- enabled: !!normanAction.uncordon,
28
- icon: 'icon icon-fw icon-play',
29
- label: 'Uncordon',
30
- total: 1,
31
- bulkable: true
26
+ action: 'uncordon',
27
+ enabled: !!normanAction.uncordon,
28
+ icon: 'icon icon-fw icon-play',
29
+ label: 'Uncordon',
30
+ total: 1,
31
+ bulkable: true
32
32
  };
33
33
 
34
34
  const drain = {
35
35
  action: 'drain',
36
- enabled: !!normanAction.drain,
36
+ enabled: !!normanAction.drain,
37
37
  icon: 'icon icon-fw icon-dot-open',
38
38
  label: this.t('drainNode.action'),
39
39
  bulkable: true,
@@ -41,25 +41,25 @@ export default class ClusterNode extends SteveModel {
41
41
  };
42
42
 
43
43
  const stopDrain = {
44
- action: 'stopDrain',
45
- enabled: !!normanAction.stopDrain,
46
- icon: 'icon icon-fw icon-x',
47
- label: this.t('drainNode.actionStop'),
48
- bulkable: true,
44
+ action: 'stopDrain',
45
+ enabled: !!normanAction.stopDrain,
46
+ icon: 'icon icon-fw icon-x',
47
+ label: this.t('drainNode.actionStop'),
48
+ bulkable: true,
49
49
  };
50
50
 
51
51
  const openSsh = {
52
- action: 'openSsh',
53
- enabled: !!this.provisionedMachine?.links?.shell,
54
- icon: 'icon icon-fw icon-chevron-right',
55
- label: 'SSH Shell',
52
+ action: 'openSsh',
53
+ enabled: !!this.provisionedMachine?.links?.shell,
54
+ icon: 'icon icon-fw icon-chevron-right',
55
+ label: 'SSH Shell',
56
56
  };
57
57
 
58
58
  const downloadKeys = {
59
- action: 'downloadKeys',
60
- enabled: !!this.provisionedMachine?.links?.sshkeys,
61
- icon: 'icon icon-fw icon-download',
62
- label: this.t('node.actions.downloadSSHKey'),
59
+ action: 'downloadKeys',
60
+ enabled: !!this.provisionedMachine?.links?.sshkeys,
61
+ icon: 'icon icon-fw icon-download',
62
+ label: this.t('node.actions.downloadSSHKey'),
63
63
  };
64
64
 
65
65
  return [
@@ -201,7 +201,9 @@ export default class ClusterNode extends SteveModel {
201
201
  }
202
202
 
203
203
  get podConsumed() {
204
- return this.pods.length;
204
+ const runningPods = this.pods.filter(pod => pod.state === 'running');
205
+
206
+ return runningPods.length || 0;
205
207
  }
206
208
 
207
209
  get podRequests() {
@@ -310,7 +312,13 @@ export default class ClusterNode extends SteveModel {
310
312
  }
311
313
 
312
314
  drain(resources) {
313
- this.$dispatch('promptModal', { component: 'DrainNode', resources: [resources || [this], this.normanNodeId] });
315
+ this.$dispatch('promptModal', {
316
+ component: 'DrainNode',
317
+ componentProps: {
318
+ kubeNodes: resources || [this],
319
+ normanNodeId: this.normanNodeId
320
+ }
321
+ });
314
322
  }
315
323
 
316
324
  async stopDrain(resources) {
@@ -336,12 +344,12 @@ export default class ClusterNode extends SteveModel {
336
344
  get details() {
337
345
  const details = [
338
346
  {
339
- label: this.t('node.detail.detailTop.version'),
340
- content: this.version
347
+ label: this.t('node.detail.detailTop.version'),
348
+ content: this.version
341
349
  },
342
350
  {
343
- label: this.t('node.detail.detailTop.os'),
344
- content: this.status.nodeInfo.osImage
351
+ label: this.t('node.detail.detailTop.os'),
352
+ content: this.status.nodeInfo.osImage
345
353
  },
346
354
  {
347
355
  label: this.t('node.detail.detailTop.containerRuntime'),
@@ -352,17 +360,17 @@ export default class ClusterNode extends SteveModel {
352
360
 
353
361
  if (this.internalIp) {
354
362
  details.unshift({
355
- label: this.t('node.detail.detailTop.internalIP'),
356
- formatter: 'CopyToClipboard',
357
- content: this.internalIp
363
+ label: this.t('node.detail.detailTop.internalIP'),
364
+ formatter: 'CopyToClipboard',
365
+ content: this.internalIp
358
366
  });
359
367
  }
360
368
 
361
369
  if (this.externalIp) {
362
370
  details.unshift({
363
- label: this.t('node.detail.detailTop.externalIP'),
364
- formatter: 'CopyToClipboard',
365
- content: this.externalIp
371
+ label: this.t('node.detail.detailTop.externalIP'),
372
+ formatter: 'CopyToClipboard',
373
+ content: this.externalIp
366
374
  });
367
375
  }
368
376
 
@@ -58,23 +58,23 @@ export default class CapiMachine extends SteveModel {
58
58
  const out = super._availableActions;
59
59
 
60
60
  const openSsh = {
61
- action: 'openSsh',
62
- enabled: !!this.links.shell && this.isRunning,
63
- icon: 'icon icon-fw icon-chevron-right',
64
- label: 'SSH Shell',
61
+ action: 'openSsh',
62
+ enabled: !!this.links.shell && this.isRunning,
63
+ icon: 'icon icon-fw icon-chevron-right',
64
+ label: 'SSH Shell',
65
65
  };
66
66
  const downloadKeys = {
67
- action: 'downloadKeys',
68
- enabled: !!this.links.sshkeys,
69
- icon: 'icon icon-fw icon-download',
70
- label: this.t('node.actions.downloadSSHKey'),
67
+ action: 'downloadKeys',
68
+ enabled: !!this.links.sshkeys,
69
+ icon: 'icon icon-fw icon-download',
70
+ label: this.t('node.actions.downloadSSHKey'),
71
71
  };
72
72
  const forceRemove = {
73
- action: 'toggleForceRemoveModal',
74
- altAction: 'forceMachineRemove',
75
- enabled: !!this.isRemoveForceable,
76
- label: this.t('node.actions.forceDelete'),
77
- icon: 'icon icon-trash',
73
+ action: 'toggleForceRemoveModal',
74
+ altAction: 'forceMachineRemove',
75
+ enabled: !!this.isRemoveForceable,
76
+ label: this.t('node.actions.forceDelete'),
77
+ icon: 'icon icon-trash',
78
78
  };
79
79
  const scaleDown = {
80
80
  action: 'toggleScaleDownModal',
@@ -114,8 +114,8 @@ export default class CapiMachine extends SteveModel {
114
114
 
115
115
  toggleForceRemoveModal(resources = this) {
116
116
  this.$dispatch('promptModal', {
117
- resources,
118
- component: 'ForceMachineRemoveDialog'
117
+ componentProps: { machine: resources },
118
+ component: 'ForceMachineRemoveDialog'
119
119
  });
120
120
  }
121
121
 
@@ -242,7 +242,29 @@ export default class CapiMachine extends SteveModel {
242
242
  return this.status?.phase === 'Running';
243
243
  }
244
244
 
245
- get ipaddress() {
246
- return this.status?.addresses?.find(({ type }) => type === ADDRESSES.INTERNAL_IP)?.address || '-';
245
+ get internalIp() {
246
+ // This shows in the IP address column for RKE2 nodes in the
247
+ // list of nodes in the cluster detail page of Cluster Management.
248
+ const internal = this.status?.addresses?.find(({ type }) => {
249
+ return type === ADDRESSES.INTERNAL_IP;
250
+ })?.address;
251
+
252
+ if (internal) {
253
+ return internal;
254
+ }
255
+
256
+ return this.t('generic.none');
257
+ }
258
+
259
+ get externalIp() {
260
+ const external = this.status?.addresses?.find(({ type }) => {
261
+ return type === ADDRESSES.EXTERNAL_IP;
262
+ })?.address;
263
+
264
+ if (external) {
265
+ return external;
266
+ }
267
+
268
+ return this.t('generic.none');
247
269
  }
248
270
  }
@@ -6,6 +6,7 @@ import { exceptionToErrorsArray } from '@shell/utils/error';
6
6
  import { handleConflict } from '@shell/plugins/dashboard-store/normalize';
7
7
  import { MACHINE_ROLES } from '@shell/config/labels-annotations';
8
8
  import { notOnlyOfRole } from '@shell/models/cluster.x-k8s.io.machine';
9
+ import { KIND } from '../config/elemental-types';
9
10
 
10
11
  export default class CapiMachineDeployment extends SteveModel {
11
12
  get cluster() {
@@ -34,6 +35,10 @@ export default class CapiMachineDeployment extends SteveModel {
34
35
  return `${ this.$rootGetters['i18n/t']('resourceTable.groupLabel.machinePool', { name: escapeHtml(this.nameDisplay) }) }`;
35
36
  }
36
37
 
38
+ get infrastructureRefKind() {
39
+ return this.spec?.template?.spec?.infrastructureRef?.kind;
40
+ }
41
+
37
42
  get templateType() {
38
43
  return this.spec.template.spec.infrastructureRef.kind ? `rke-machine.cattle.io.${ this.spec.template.spec.infrastructureRef.kind.toLowerCase() }` : null;
39
44
  }
@@ -94,7 +99,7 @@ export default class CapiMachineDeployment extends SteveModel {
94
99
 
95
100
  // use this pool's definition in the cluster's rkeConfig to scale, not this.spec.replicas
96
101
  get inClusterSpec() {
97
- const machineConfigName = this.template.metadata.annotations['rke.cattle.io/cloned-from-name'];
102
+ const machineConfigName = this.template?.metadata?.annotations['rke.cattle.io/cloned-from-name'];
98
103
  const machinePools = this.cluster.spec.rkeConfig.machinePools;
99
104
 
100
105
  return machinePools.find(pool => pool.machineConfigRef.name === machineConfigName);
@@ -147,7 +152,7 @@ export default class CapiMachineDeployment extends SteveModel {
147
152
 
148
153
  // prevent scaling pool to 0 if it would scale down the only etcd or control plane node
149
154
  canScaleDownPool() {
150
- if (!this.canUpdate || this.inClusterSpec?.quantity === 0) {
155
+ if (!this.canUpdate || this.inClusterSpec?.quantity === 0 || this.infrastructureRefKind === KIND.MACHINE_INV_SELECTOR_TEMPLATES) {
151
156
  return false;
152
157
  }
153
158
 
@@ -159,7 +164,12 @@ export default class CapiMachineDeployment extends SteveModel {
159
164
  return notOnlyOfRole(this, this.cluster.machines);
160
165
  }
161
166
 
167
+ // prevent scaling up pool for Elemental machines
162
168
  canScaleUpPool() {
169
+ if (this.infrastructureRefKind === KIND.MACHINE_INV_SELECTOR_TEMPLATES) {
170
+ return false;
171
+ }
172
+
163
173
  return true;
164
174
  }
165
175
 
@@ -56,7 +56,7 @@ export default class GateKeeperConstraint extends SteveModel {
56
56
  return violations.map((violation) => {
57
57
  return {
58
58
  ...violation,
59
- resourceLink: {
59
+ resourceLink: {
60
60
  text: violation.name,
61
61
  to: {
62
62
  name: 'c-cluster-product-resource-id',
@@ -3,10 +3,10 @@ import NormanModel from '@shell/plugins/steve/norman-class';
3
3
  export default class Rke1EtcdBackup extends NormanModel {
4
4
  get _availableActions() {
5
5
  const restore = {
6
- action: 'promptRestore',
7
- enabled: true,
8
- icon: 'icon icon-fw icon-backup-restore',
9
- label: 'Restore'
6
+ action: 'promptRestore',
7
+ enabled: true,
8
+ icon: 'icon icon-fw icon-backup-restore',
9
+ label: 'Restore'
10
10
  };
11
11
 
12
12
  const baseActions = super._availableActions;
package/models/event.js CHANGED
@@ -24,4 +24,11 @@ export default class K8sEvent extends SteveModel {
24
24
  get eventType() {
25
25
  return this._type;
26
26
  }
27
+
28
+ get lastSeen() {
29
+ const schema = this.$getters['schemaFor'](this.type);
30
+ const rowValueGetter = this.$rootGetters['type-map/rowValueGetter'];
31
+
32
+ return schema && rowValueGetter ? rowValueGetter(schema, 'Last Seen')(this) : null;
33
+ }
27
34
  }
@@ -9,27 +9,27 @@ export default class FleetCluster extends SteveModel {
9
9
  const out = super._availableActions;
10
10
 
11
11
  insertAt(out, 0, {
12
- action: 'pause',
13
- label: 'Pause',
14
- icon: 'icon icon-pause',
15
- bulkable: true,
16
- enabled: !!this.links.update && !this.spec?.paused
12
+ action: 'pause',
13
+ label: 'Pause',
14
+ icon: 'icon icon-pause',
15
+ bulkable: true,
16
+ enabled: !!this.links.update && !this.spec?.paused
17
17
  });
18
18
 
19
19
  insertAt(out, 1, {
20
- action: 'unpause',
21
- label: 'Unpause',
22
- icon: 'icon icon-play',
23
- bulkable: true,
24
- enabled: !!this.links.update && this.spec?.paused === true
20
+ action: 'unpause',
21
+ label: 'Unpause',
22
+ icon: 'icon icon-play',
23
+ bulkable: true,
24
+ enabled: !!this.links.update && this.spec?.paused === true
25
25
  });
26
26
 
27
27
  insertAt(out, 2, {
28
- action: 'forceUpdate',
29
- label: 'Force Update',
30
- icon: 'icon icon-refresh',
31
- bulkable: true,
32
- enabled: !!this.links.update
28
+ action: 'forceUpdate',
29
+ label: 'Force Update',
30
+ icon: 'icon icon-refresh',
31
+ bulkable: true,
32
+ enabled: !!this.links.update
33
33
  });
34
34
 
35
35
  insertAt(out, 3, {
@@ -53,7 +53,7 @@ export default class FleetClusterGroup extends SteveModel {
53
53
  const out = [
54
54
  {
55
55
  label: 'Clusters Ready',
56
- content: `${ this.clusterInfo.ready } of ${ this.clusterInfo.total }`,
56
+ content: `${ this.clusterInfo.ready } of ${ this.clusterInfo.total }`,
57
57
  },
58
58
  ];
59
59
 
@@ -39,27 +39,27 @@ export default class GitRepo extends SteveModel {
39
39
  const out = super._availableActions;
40
40
 
41
41
  insertAt(out, 0, {
42
- action: 'pause',
43
- label: 'Pause',
44
- icon: 'icon icon-pause',
45
- bulkable: true,
46
- enabled: !!this.links.update && !this.spec?.paused
42
+ action: 'pause',
43
+ label: 'Pause',
44
+ icon: 'icon icon-pause',
45
+ bulkable: true,
46
+ enabled: !!this.links.update && !this.spec?.paused
47
47
  });
48
48
 
49
49
  insertAt(out, 1, {
50
- action: 'unpause',
51
- label: 'Unpause',
52
- icon: 'icon icon-play',
53
- bulkable: true,
54
- enabled: !!this.links.update && this.spec?.paused === true
50
+ action: 'unpause',
51
+ label: 'Unpause',
52
+ icon: 'icon icon-play',
53
+ bulkable: true,
54
+ enabled: !!this.links.update && this.spec?.paused === true
55
55
  });
56
56
 
57
57
  insertAt(out, 2, {
58
- action: 'forceUpdate',
59
- label: 'Force Update',
60
- icon: 'icon icon-refresh',
61
- bulkable: true,
62
- enabled: !!this.links.update
58
+ action: 'forceUpdate',
59
+ label: 'Force Update',
60
+ icon: 'icon icon-refresh',
61
+ bulkable: true,
62
+ enabled: !!this.links.update
63
63
  });
64
64
 
65
65
  insertAt(out, 3, { divider: true });
@@ -36,7 +36,7 @@ export default class Group extends Principal {
36
36
  action: 'goToEdit',
37
37
  label: this.t('action.edit'),
38
38
  icon: 'icon icon-edit',
39
- enabled: true,
39
+ enabled: true,
40
40
  },
41
41
  {
42
42
  action: 'promptUnassignGroupRoles',
@@ -28,8 +28,8 @@ export default class LogClusterFlow extends Flow {
28
28
  get customValidationRules() {
29
29
  return [
30
30
  {
31
- path: 'spec',
32
- validators: ['flowOutput'],
31
+ path: 'spec',
32
+ validators: ['flowOutput'],
33
33
  },
34
34
  ];
35
35
  }
@@ -20,6 +20,10 @@ export function matchRuleIsPopulated(rule) {
20
20
  return true;
21
21
  }
22
22
 
23
+ if ( rule.namespaces?.length ) {
24
+ return true;
25
+ }
26
+
23
27
  return false;
24
28
  }
25
29
 
@@ -102,8 +106,8 @@ export default class LogFlow extends SteveModel {
102
106
  get customValidationRules() {
103
107
  return [
104
108
  {
105
- path: 'spec',
106
- validators: ['flowOutput:verifyLocal'],
109
+ path: 'spec',
110
+ validators: ['flowOutput:verifyLocal'],
107
111
  },
108
112
  ];
109
113
  }
@@ -76,6 +76,18 @@ export const PROVIDERS = [
76
76
  labelKey: 'logging.outputProviders.newrelic',
77
77
  default: { },
78
78
  },
79
+ {
80
+ name: 'opensearch',
81
+ labelKey: 'logging.outputProviders.opensearch',
82
+ default: {},
83
+ },
84
+ {
85
+ name: 'redis',
86
+ labelKey: 'logging.outputProviders.redis',
87
+ default: {
88
+ port: 6379, db_number: 0, ttl: 0
89
+ },
90
+ },
79
91
  {
80
92
  name: 'splunkHec',
81
93
  labelKey: 'logging.outputProviders.splunkHec',
@@ -142,7 +154,7 @@ export default class LogOutput extends SteveModel {
142
154
  get url() {
143
155
  return {
144
156
  name: 'c-cluster-product-resource-namespace-id',
145
- params: {
157
+ params: {
146
158
  resource: this.type,
147
159
  id: this.name,
148
160
  namespace: this.namespace
@@ -153,8 +165,8 @@ export default class LogOutput extends SteveModel {
153
165
  get customValidationRules() {
154
166
  return [
155
167
  {
156
- path: 'spec.logdna',
157
- validators: ['logdna'],
168
+ path: 'spec.logdna',
169
+ validators: ['logdna'],
158
170
  }
159
171
  ];
160
172
  }
@@ -24,10 +24,10 @@ export default class AuthConfig extends SteveModel {
24
24
  const out = super._availableActions;
25
25
 
26
26
  insertAt(out, 0, {
27
- action: 'disable',
28
- label: 'Disable',
29
- icon: 'icon icon-spinner',
30
- enabled: this.enabled === true,
27
+ action: 'disable',
28
+ label: 'Disable',
29
+ icon: 'icon icon-spinner',
30
+ enabled: this.enabled === true,
31
31
  });
32
32
 
33
33
  insertAt(out, 1, { divider: true });
@@ -9,7 +9,7 @@ import jsyaml from 'js-yaml';
9
9
  import { eachLimit } from '@shell/utils/promise';
10
10
  import { addParams } from '@shell/utils/url';
11
11
  import { isEmpty } from '@shell/utils/object';
12
- import { HARVESTER_NAME as HARVESTER } from '@shell/config/product/harvester-manager';
12
+ import { HARVESTER_NAME as HARVESTER } from '@shell/config/features';
13
13
  import { isHarvesterCluster } from '@shell/utils/cluster';
14
14
  import HybridModel from '@shell/plugins/steve/hybrid-class';
15
15
  import { LINUX, WINDOWS } from '@shell/store/catalog';
@@ -43,10 +43,10 @@ export default class MgmtCluster extends HybridModel {
43
43
  const out = super._availableActions;
44
44
 
45
45
  insertAt(out, 0, {
46
- action: 'openShell',
47
- label: this.t('nav.shell'),
48
- icon: 'icon icon-terminal',
49
- enabled: !!this.links.shell,
46
+ action: 'openShell',
47
+ label: this.t('nav.shell'),
48
+ icon: 'icon icon-terminal',
49
+ enabled: !!this.links.shell,
50
50
  });
51
51
 
52
52
  insertAt(out, 1, {
@@ -59,11 +59,11 @@ export default class MgmtCluster extends HybridModel {
59
59
  });
60
60
 
61
61
  insertAt(out, 2, {
62
- action: 'copyKubeConfig',
63
- label: this.t('cluster.copyConfig'),
64
- bulkable: false,
65
- enabled: this.$rootGetters['isRancher'] && this.hasAction('generateKubeconfig'),
66
- icon: 'icon icon-copy',
62
+ action: 'copyKubeConfig',
63
+ label: this.t('cluster.copyConfig'),
64
+ bulkable: false,
65
+ enabled: this.$rootGetters['isRancher'] && this.hasAction('generateKubeconfig'),
66
+ icon: 'icon icon-copy',
67
67
  });
68
68
 
69
69
  return out;
@@ -2,7 +2,7 @@ import { CREATOR_ID } from '@shell/config/labels-annotations';
2
2
  import { _CREATE } from '@shell/config/query-params';
3
3
  import { MANAGEMENT, NORMAN } from '@shell/config/types';
4
4
  import HybridModel from '@shell/plugins/steve/hybrid-class';
5
- import { HARVESTER_NAME } from '@shell/config/product/harvester-manager';
5
+ import { HARVESTER_NAME } from '@shell/config/features';
6
6
 
7
7
  export default class CRTB extends HybridModel {
8
8
  detailPageHeaderActionOverride(realMode) {
@@ -77,9 +77,9 @@ export default class CRTB extends HybridModel {
77
77
  const name = `c-cluster-product-resource-id`;
78
78
 
79
79
  const params = {
80
- resource: MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING,
81
- id: this.clusterName,
82
- product: 'explorer',
80
+ resource: MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING,
81
+ id: this.clusterName,
82
+ product: 'explorer',
83
83
  };
84
84
 
85
85
  return { name, params };
@@ -116,11 +116,11 @@ export default class CRTB extends HybridModel {
116
116
  const principalProperty = principal.principalType === 'group' ? 'groupPrincipalId' : 'userPrincipalId';
117
117
 
118
118
  return this.$dispatch(`rancher/create`, {
119
- type: NORMAN.CLUSTER_ROLE_TEMPLATE_BINDING,
120
- roleTemplateId: this.roleTemplateName,
121
- [principalProperty]: principal.id,
122
- clusterId: this.clusterName,
123
- id: this.id?.replace('/', ':')
119
+ type: NORMAN.CLUSTER_ROLE_TEMPLATE_BINDING,
120
+ roleTemplateId: this.roleTemplateName,
121
+ [principalProperty]: principal.id,
122
+ clusterId: this.clusterName,
123
+ id: this.id?.replace('/', ':')
124
124
  }, { root: true });
125
125
  })();
126
126
  }
@@ -1,10 +1,11 @@
1
1
  import { DESCRIPTION } from '@shell/config/labels-annotations';
2
2
  import { SCHEMA, NORMAN } from '@shell/config/types';
3
- import { CATTLE_API_GROUP, SUBTYPE_MAPPING } from '@shell/models/management.cattle.io.roletemplate';
3
+ import { CATTLE_API_GROUP, SUBTYPE_MAPPING, CREATE_VERBS } from '@shell/models/management.cattle.io.roletemplate';
4
4
  import { uniq } from '@shell/utils/array';
5
5
  import { get } from '@shell/utils/object';
6
- import SteveModel from '@shell/plugins/steve/steve-class';
6
+ import SteveDescriptionModel from '@shell/plugins/steve/steve-description-class';
7
7
  import Role from './rbac.authorization.k8s.io.role';
8
+ import { AS, MODE, _CLONE, _UNFLAG } from '@shell/config/query-params';
8
9
 
9
10
  const BASE = 'user-base';
10
11
  const USER = 'user';
@@ -13,7 +14,7 @@ const SPECIAL = [BASE, ADMIN, USER];
13
14
 
14
15
  const GLOBAL = SUBTYPE_MAPPING.GLOBAL.key;
15
16
 
16
- export default class GlobalRole extends SteveModel {
17
+ export default class GlobalRole extends SteveDescriptionModel {
17
18
  get customValidationRules() {
18
19
  return Role.customValidationRules();
19
20
  }
@@ -22,8 +23,8 @@ export default class GlobalRole extends SteveModel {
22
23
  const out = this._details;
23
24
 
24
25
  out.unshift({
25
- label: this.t('resourceDetail.detailTop.name'),
26
- content: get(this, 'name')
26
+ label: this.t('resourceDetail.detailTop.name'),
27
+ content: get(this, 'name')
27
28
  });
28
29
 
29
30
  return out;
@@ -113,6 +114,26 @@ export default class GlobalRole extends SteveModel {
113
114
  })();
114
115
  }
115
116
 
117
+ get canCreate() {
118
+ const schema = this.$getters['schemaFor'](this.type);
119
+
120
+ return schema?.resourceMethods.find(verb => CREATE_VERBS.has(verb));
121
+ }
122
+
123
+ goToClone(moreQuery = {}) {
124
+ const location = this.detailLocation;
125
+
126
+ location.query = {
127
+ ...location.query,
128
+ [MODE]: _CLONE,
129
+ [AS]: _UNFLAG,
130
+ roleContext: GLOBAL,
131
+ ...moreQuery
132
+ };
133
+
134
+ this.currentRouter().push(location);
135
+ }
136
+
116
137
  async save() {
117
138
  const norman = await this.norman;
118
139