@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
@@ -0,0 +1,37 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ // Script lives in shell/scripts, so work out top-level dir from there
5
+ const topDir = path.resolve(__dirname, '..', '..');
6
+ const dir = process.cwd();
7
+
8
+ // Read the package.json file
9
+ const topPkgFile = path.join(topDir, 'package.json');
10
+ const pkgFile = path.join(dir, 'package.json');
11
+
12
+ const topPkg = JSON.parse(fs.readFileSync(topPkgFile));
13
+ const mainPkg = JSON.parse(fs.readFileSync(pkgFile));
14
+
15
+ // Look to see if we specify the deps we require
16
+ if (mainPkg._requires) {
17
+ // Map each one to the same version as the main package
18
+ const out = {};
19
+
20
+ mainPkg._requires.forEach((name) => {
21
+ let ver = topPkg.dependencies?.[name] || topPkg.devDependencies?.[name];
22
+
23
+ if (name === '@rancher/components') {
24
+ const componentsPkgFile = path.join(topDir, 'pkg', 'rancher-components', 'package.json');
25
+ const componentsPkg = JSON.parse(fs.readFileSync(componentsPkgFile));
26
+
27
+ ver = componentsPkg.version;
28
+ }
29
+
30
+ out[name] = ver;
31
+ });
32
+
33
+ mainPkg._pkgs = out;
34
+ delete mainPkg._requires;
35
+
36
+ fs.writeFileSync(pkgFile, JSON.stringify(mainPkg, null, 2), 'utf-8');
37
+ }
@@ -30,7 +30,7 @@ if [ $SKIP_SETUP == "false" ]; then
30
30
  fi
31
31
 
32
32
  set +e
33
- RUNNING=$(ps -A | grep Verdaccio -c)
33
+ RUNNING=$(pgrep Verdaccio | wc -l | xargs)
34
34
  set -e
35
35
 
36
36
  if [ $RUNNING -eq 0 ]; then
@@ -45,7 +45,7 @@ if [ $SKIP_SETUP == "false" ]; then
45
45
 
46
46
  # Remove existing admin if already there
47
47
  if [ -f ~/.config/verdaccio/htpasswd ]; then
48
- sed -i '/^admin:/d' ~/.config/verdaccio/htpasswd
48
+ sed -i.bak -e '/^admin:/d' ~/.config/verdaccio/htpasswd
49
49
  fi
50
50
 
51
51
  curl -XPUT -H "Content-type: application/json" -d '{ "name": "admin", "password": "admin" }' 'http://localhost:4873/-/user/admin' > login.json
@@ -67,7 +67,10 @@ else
67
67
  fi
68
68
 
69
69
  export YARN_REGISTRY=http://localhost:4873
70
- export NEXT_TELEMETRY_DISABLED=1
70
+ export NUXT_TELEMETRY_DISABLED=1
71
+
72
+ # Remove test package from previous run, if present
73
+ rm -rf ${BASE_DIR}/pkg/test-pkg
71
74
 
72
75
  # We need to patch the version number of the shell, otherwise if we are running
73
76
  # with the currently published version, things will fail as those versions
@@ -75,10 +78,19 @@ export NEXT_TELEMETRY_DISABLED=1
75
78
  sed -i.bak -e "s/\"version\": \"[0-9]*.[0-9]*.[0-9]*\",/\"version\": \"7.7.7\",/g" ${SHELL_DIR}/package.json
76
79
  rm ${SHELL_DIR}/package.json.bak
77
80
 
81
+ # Same as above for Rancher Components
82
+ # We might have bumped the version number but its not published yet, so this will fail
83
+ sed -i.bak -e "s/\"version\": \"[0-9]*.[0-9]*.[0-9]*\",/\"version\": \"7.7.7\",/g" ${BASE_DIR}/pkg/rancher-components/package.json
84
+
78
85
  # Publish shell
79
86
  echo "Publishing shell packages to local registry"
87
+ yarn install
80
88
  ${SHELL_DIR}/scripts/publish-shell.sh
81
89
 
90
+ # Publish rancher components
91
+ yarn build:lib
92
+ yarn publish:lib
93
+
82
94
  if [ "${SKIP_STANDALONE}" == "false" ]; then
83
95
  DIR=$(mktemp -d)
84
96
  pushd $DIR > /dev/null
@@ -92,21 +104,21 @@ if [ "${SKIP_STANDALONE}" == "false" ]; then
92
104
  yarn install
93
105
 
94
106
  echo "Building skeleton app"
95
- yarn build
107
+ FORCE_COLOR=true yarn build | cat
96
108
 
97
109
  # Package creator
98
110
  echo "Verifying package creator package"
99
111
  yarn create @rancher/pkg test-pkg
100
112
 
101
113
  echo "Building test package"
102
- yarn build-pkg test-pkg
114
+ FORCE_COLOR=true yarn build-pkg test-pkg | cat
103
115
 
104
116
  # Add test list component to the test package
105
117
  # Validates rancher-components imports
106
118
  mkdir pkg/test-pkg/list
107
119
  cp ${SHELL_DIR}/list/catalog.cattle.io.clusterrepo.vue pkg/test-pkg/list
108
120
 
109
- yarn build-pkg test-pkg
121
+ FORCE_COLOR=true yarn build-pkg test-pkg | cat
110
122
 
111
123
  echo "Cleaning temporary dir"
112
124
  popd > /dev/null
@@ -126,7 +138,7 @@ yarn install
126
138
  rm -rf ./pkg/test-pkg
127
139
  yarn create @rancher/pkg test-pkg -t
128
140
  cp ${SHELL_DIR}/list/catalog.cattle.io.clusterrepo.vue ./pkg/test-pkg/list
129
- yarn build-pkg test-pkg
141
+ FORCE_COLOR=true yarn build-pkg test-pkg | cat
130
142
  rm -rf ./pkg/test-pkg
131
143
 
132
144
  echo "All done"
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env bash
2
+
3
+ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
4
+ BASE_DIR="$( cd $SCRIPT_DIR && cd ../.. & pwd)"
5
+ SHELL_DIR=$BASE_DIR/shell
6
+
7
+ echo "Generating typescript definitions"
8
+
9
+ rm -rf ${SHELL_DIR}/tmp
10
+ mkdir -p ${SHELL_DIR}/tmp
11
+
12
+ echo "Generating ..."
13
+
14
+ # utils
15
+ ${BASE_DIR}/node_modules/.bin/tsc shell/utils/*.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/utils > /dev/null
16
+
17
+ # config
18
+ ${BASE_DIR}/node_modules/.bin/tsc shell/config/query-params.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/config > /dev/null
19
+ ${BASE_DIR}/node_modules/.bin/tsc shell/config/table-headers.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/config > /dev/null
20
+ ${BASE_DIR}/node_modules/.bin/tsc shell/config/types.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/config > /dev/null
21
+
22
+ # store
23
+ ${BASE_DIR}/node_modules/.bin/tsc shell/store/features.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/store > /dev/null
24
+
25
+ # plugins
26
+ ${BASE_DIR}/node_modules/.bin/tsc shell/plugins/dashboard-store/normalize.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/plugins/dashboard-store/ > /dev/null
27
+ ${BASE_DIR}/node_modules/.bin/tsc shell/plugins/dashboard-store/resource-class.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/plugins/dashboard-store/ > /dev/null
28
+
29
+
30
+ # mkixins
31
+ ${BASE_DIR}/node_modules/.bin/tsc shell/mixins/create-edit-view/index.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/mixins/create-edit-view > /dev/null
32
+
33
+ #./node_modules/.bin/tsc shell/plugins/dashboard-store/*.js --declaration --allowJs --emitDeclarationOnly --outDir ${SHELL_DIR}/tmp/plugins/dashboard-store > /dev/null
34
+
35
+ # Go through all of the folders and combine by wrapping with 'declare module'
36
+
37
+ echo "Combining type definitions ..."
38
+
39
+ DEST=${SHELL_DIR}/types/shell
40
+ mkdir -p ${DEST}
41
+
42
+ INDEX=${DEST}/index.d.ts
43
+ rm -rf ${INDEX}
44
+
45
+ echo "// Auto-generated type definitions for shell" > ${INDEX}
46
+ echo "// Do not modify this file as changes will get overwritten" >> ${INDEX}
47
+
48
+ # Copy in the vue shim type definitions
49
+ if [ -f "$BASE_DIR/shell/types/vue-shim.d" ]; then
50
+ cat "$BASE_DIR/shell/types/vue-shim.d" >> ${INDEX}
51
+ fi
52
+
53
+ function processDir() {
54
+ local dir=$1
55
+ local basePkg=$2
56
+
57
+ for entry in $1/*
58
+ do
59
+ local filename=$(basename $entry)
60
+
61
+ if [ -d $entry ]; then
62
+ processDir $entry $basePkg/$filename
63
+ else
64
+ if [[ $filename == *.d.ts ]]; then
65
+ # We use convoluted mechanism here to ensure this works on mac with bash 3.x
66
+ local name=$(echo $filename | rev | cut -c6- | rev)
67
+
68
+ local module=${basePkg}/${name}
69
+ if [ "${name}" == "index" ]; then
70
+ module=${basePkg}
71
+ fi
72
+
73
+ echo -e "\n// ${module}\n" >> ${INDEX}
74
+ echo "declare module '${module}' {" >> ${INDEX}
75
+ cat $entry >> ${INDEX}
76
+ echo -e "}" >> ${INDEX}
77
+ fi
78
+ fi
79
+ done
80
+ }
81
+
82
+ processDir ${SHELL_DIR}/tmp @shell
83
+
84
+ rm -rf ${SHELL_DIR}/tmp
@@ -13,7 +13,7 @@
13
13
 
14
14
  .initial-load-spinner {
15
15
  animation: initial-load-animate 1s infinite linear;
16
- background-color: #fff;
16
+ background-color: transparent;
17
17
  box-sizing: border-box;
18
18
  border: 5px solid #008ACF;
19
19
  border-radius: 50%;
@@ -22,9 +22,9 @@ export const state = function() {
22
22
  };
23
23
 
24
24
  export const getters = {
25
- showing: state => state.show,
26
- elem: state => state.elem,
27
- event: state => state.event,
25
+ showing: state => state.show,
26
+ elem: state => state.elem,
27
+ event: state => state.event,
28
28
 
29
29
  options(state) {
30
30
  let selected = state.resources;
package/store/auth.js CHANGED
@@ -216,8 +216,8 @@ export const actions = {
216
216
  let url = removeParam(redirectUrl, GITHUB_SCOPE);
217
217
 
218
218
  const params = {
219
- [GITHUB_SCOPE]: scopes.join(','),
220
- [GITHUB_NONCE]: base64Encode(nonce, 'url')
219
+ [GITHUB_SCOPE]: scopes.join(','),
220
+ [GITHUB_NONCE]: base64Encode(nonce, 'url')
221
221
  };
222
222
 
223
223
  if (!url.includes(GITHUB_REDIRECT)) {
@@ -276,8 +276,8 @@ export const actions = {
276
276
  const url = await dispatch('redirectTo', {
277
277
  provider,
278
278
  redirectUrl,
279
- test: true,
280
- redirect: false
279
+ test: true,
280
+ redirect: false
281
281
  });
282
282
 
283
283
  return openAuthPopup(url, provider);
package/store/aws.js CHANGED
@@ -44,8 +44,8 @@ function credentialDefaultProvider(accessKey, secretKey) {
44
44
  // The SDK will complain if these aren't set, so fill them with something
45
45
  // even though the cloudCredential will be used eventually
46
46
  const out = {
47
- accessKeyId: accessKey || randomStr(),
48
- secretAccessKey: secretKey || randomStr(),
47
+ accessKeyId: accessKey || randomStr(),
48
+ secretAccessKey: secretKey || randomStr(),
49
49
  };
50
50
 
51
51
  return out;
@@ -164,8 +164,8 @@ export const actions = {
164
164
  memoryBytes: row.MemoryInfo.SizeInMiB * 1024 * 1024,
165
165
  label: rootGetters['i18n/t']('cluster.machineConfig.aws.sizeLabel', {
166
166
  apiName,
167
- cpu: row.VCpuInfo.DefaultVCpus,
168
- memory: row.MemoryInfo.SizeInMiB / 1024,
167
+ cpu: row.VCpuInfo.DefaultVCpus,
168
+ memory: row.MemoryInfo.SizeInMiB / 1024,
169
169
  storageSize,
170
170
  storageUnit,
171
171
  storageType,
package/store/catalog.js CHANGED
@@ -503,32 +503,32 @@ function addChart(ctx, map, chart, repo) {
503
503
  if ( ctx ) { }
504
504
  obj = classify(ctx, {
505
505
  key,
506
- type: 'chart',
507
- id: key,
506
+ type: 'chart',
507
+ id: key,
508
508
  certified,
509
509
  sideLabel,
510
510
  repoType,
511
511
  repoName,
512
- repoNameDisplay: ctx.rootGetters['i18n/withFallback'](`catalog.repo.name."${ repoName }"`, null, repoName),
513
- certifiedSort: CERTIFIED_SORTS[certified] || 99,
514
- icon: chart.icon,
515
- color: repo.color,
516
- chartType: chart.annotations?.[CATALOG_ANNOTATIONS.TYPE] || CATALOG_ANNOTATIONS._APP,
517
- chartName: chart.name,
518
- chartNameDisplay: chart.annotations?.[CATALOG_ANNOTATIONS.DISPLAY_NAME] || chart.name,
519
- chartDescription: chart.description,
520
- featured: chart.annotations?.[CATALOG_ANNOTATIONS.FEATURED],
521
- repoKey: repo._key,
522
- versions: [],
523
- categories: filterCategories(chart.keywords),
524
- deprecated: !!chart.deprecated,
525
- hidden: !!chart.annotations?.[CATALOG_ANNOTATIONS.HIDDEN],
526
- targetNamespace: chart.annotations?.[CATALOG_ANNOTATIONS.NAMESPACE],
527
- targetName: chart.annotations?.[CATALOG_ANNOTATIONS.RELEASE_NAME],
528
- scope: chart.annotations?.[CATALOG_ANNOTATIONS.SCOPE],
529
- provides: [],
530
- windowsIncompatible: !(chart.annotations?.[CATALOG_ANNOTATIONS.PERMITTED_OS] || '').includes('windows'),
531
- deploysOnWindows: (chart.annotations?.[CATALOG_ANNOTATIONS.DEPLOYED_OS] || '').includes('windows')
512
+ repoNameDisplay: ctx.rootGetters['i18n/withFallback'](`catalog.repo.name."${ repoName }"`, null, repoName),
513
+ certifiedSort: CERTIFIED_SORTS[certified] || 99,
514
+ icon: chart.icon,
515
+ color: repo.color,
516
+ chartType: chart.annotations?.[CATALOG_ANNOTATIONS.TYPE] || CATALOG_ANNOTATIONS._APP,
517
+ chartName: chart.name,
518
+ chartNameDisplay: chart.annotations?.[CATALOG_ANNOTATIONS.DISPLAY_NAME] || chart.name,
519
+ chartDescription: chart.description,
520
+ featured: chart.annotations?.[CATALOG_ANNOTATIONS.FEATURED],
521
+ repoKey: repo._key,
522
+ versions: [],
523
+ categories: filterCategories(chart.keywords),
524
+ deprecated: !!chart.deprecated,
525
+ hidden: !!chart.annotations?.[CATALOG_ANNOTATIONS.HIDDEN],
526
+ targetNamespace: chart.annotations?.[CATALOG_ANNOTATIONS.NAMESPACE],
527
+ targetName: chart.annotations?.[CATALOG_ANNOTATIONS.RELEASE_NAME],
528
+ scope: chart.annotations?.[CATALOG_ANNOTATIONS.SCOPE],
529
+ provides: [],
530
+ windowsIncompatible: !(chart.annotations?.[CATALOG_ANNOTATIONS.PERMITTED_OS] || '').includes('windows'),
531
+ deploysOnWindows: (chart.annotations?.[CATALOG_ANNOTATIONS.DEPLOYED_OS] || '').includes('windows')
532
532
  });
533
533
 
534
534
  map[key] = obj;
package/store/index.js CHANGED
@@ -81,7 +81,13 @@ const getActiveNamespaces = (state, getters) => {
81
81
  return out;
82
82
  }
83
83
 
84
- const namespaces = getters[`${ inStore }/all`](NAMESPACE);
84
+ let namespaces = [];
85
+
86
+ if (Array.isArray(state.allNamespaces) && state.allNamespaces.length > 0) {
87
+ namespaces = state.allNamespaces;
88
+ } else {
89
+ namespaces = getters[`${ inStore }/all`](NAMESPACE);
90
+ }
85
91
 
86
92
  const filters = state.namespaceFilters.filter(x => !!x && !`${ x }`.startsWith(NAMESPACED_PREFIX));
87
93
  const includeAll = getters.isAllNamespaces;
@@ -169,6 +175,7 @@ export const state = () => {
169
175
  serverVersion: null,
170
176
  systemNamespaces: [],
171
177
  isSingleProduct: undefined,
178
+ namespaceFilterMode: null,
172
179
  };
173
180
  };
174
181
 
@@ -205,6 +212,15 @@ export const getters = {
205
212
  return state.systemNamespaces;
206
213
  },
207
214
 
215
+ /**
216
+ * Namespace Filter Mode supplies a resource type to the NamespaceFilter.
217
+ *
218
+ * Only one of the resource type is allowed to be selected
219
+ */
220
+ namespaceFilterMode(state) {
221
+ return state.namespaceFilterMode;
222
+ },
223
+
208
224
  currentCluster(state, getters) {
209
225
  return getters['management/byId'](MANAGEMENT.CLUSTER, state.clusterId);
210
226
  },
@@ -284,6 +300,34 @@ export const getters = {
284
300
  return state.namespaceFilters.filter(x => !`${ x }`.startsWith(NAMESPACED_PREFIX)).length === 0;
285
301
  },
286
302
 
303
+ isSingleNamespace(state, getters) {
304
+ const product = getters['currentProduct'];
305
+
306
+ if ( !product ) {
307
+ return false;
308
+ }
309
+
310
+ if ( product.showWorkspaceSwitcher ) {
311
+ return false;
312
+ }
313
+
314
+ if ( getters.isAllNamespaces ) {
315
+ return false;
316
+ }
317
+
318
+ const filters = state.namespaceFilters;
319
+
320
+ if ( filters.length !== 1 ) {
321
+ return false;
322
+ }
323
+
324
+ if (filters[0].startsWith('ns://')) {
325
+ return filters[0];
326
+ }
327
+
328
+ return false;
329
+ },
330
+
287
331
  isMultipleNamespaces(state, getters) {
288
332
  const product = getters['currentProduct'];
289
333
 
@@ -485,6 +529,10 @@ export const mutations = {
485
529
  getActiveNamespaces(state, getters);
486
530
  },
487
531
 
532
+ setNamespaceFilterMode(state, mode) {
533
+ state.namespaceFilterMode = mode;
534
+ },
535
+
488
536
  pageActions(state, pageActions) {
489
537
  state.pageActions = pageActions;
490
538
  },
@@ -795,10 +843,10 @@ export const actions = {
795
843
  };
796
844
 
797
845
  const res = await allHash({
798
- projects: fetchProjects(),
799
- counts: dispatch('cluster/findAll', { type: COUNT }),
800
- namespaces: dispatch('cluster/findAll', { type: NAMESPACE }),
801
- navLinks: !!getters['cluster/schemaFor'](UI.NAV_LINK) && dispatch('cluster/findAll', { type: UI.NAV_LINK }),
846
+ projects: fetchProjects(),
847
+ counts: dispatch('cluster/findAll', { type: COUNT }),
848
+ namespaces: dispatch('cluster/findAll', { type: NAMESPACE }),
849
+ navLinks: !!getters['cluster/schemaFor'](UI.NAV_LINK) && dispatch('cluster/findAll', { type: UI.NAV_LINK }),
802
850
  });
803
851
 
804
852
  await dispatch('cleanNamespaces');
@@ -808,7 +856,6 @@ export const actions = {
808
856
  commit('updateNamespaces', {
809
857
  filters: filters || [ALL_USER],
810
858
  all: res.namespaces,
811
- ...getters
812
859
  });
813
860
 
814
861
  commit('clusterReady', true);
@@ -826,7 +873,11 @@ export const actions = {
826
873
  [key]: ids
827
874
  }
828
875
  });
829
- commit('updateNamespaces', { filters: ids, ...getters });
876
+ commit('updateNamespaces', { filters: ids });
877
+ },
878
+
879
+ setNamespaceFilterMode({ commit }, mode) {
880
+ commit('setNamespaceFilterMode', mode);
830
881
  },
831
882
 
832
883
  async cleanNamespaces({ getters, dispatch }) {
package/store/plugins.js CHANGED
@@ -5,7 +5,7 @@ export function simplify(key) {
5
5
  }
6
6
 
7
7
  const credentialOptions = {
8
- aws: {
8
+ aws: {
9
9
  publicKey: 'accessKey',
10
10
  publicMode: 'full',
11
11
  keys: ['region', 'accessKey', 'secretKey']
@@ -15,7 +15,7 @@ const credentialOptions = {
15
15
  publicMode: 'prefix',
16
16
  keys: 'accessToken'
17
17
  },
18
- azure: {
18
+ azure: {
19
19
  publicKey: 'clientId',
20
20
  publicMode: 'full',
21
21
  keys: ['subscriptionId', 'tenantId', 'clientId', 'clientSecret']
@@ -125,14 +125,6 @@ export const state = function() {
125
125
  };
126
126
 
127
127
  export const getters = {
128
- credentialDrivers() {
129
- const ctx = require.context('@shell/cloud-credential', true, /.*/);
130
-
131
- const drivers = ctx.keys().filter(path => !path.match(/\.(vue|js)$/)).map(path => path.substr(2));
132
-
133
- return drivers;
134
- },
135
-
136
128
  credentialOptions() {
137
129
  return (name) => {
138
130
  name = (name || '').toLowerCase();
@@ -157,15 +149,6 @@ export const getters = {
157
149
  };
158
150
  },
159
151
 
160
- machineDrivers() {
161
- // The subset of drivers supported by Vue components
162
- const ctx = require.context('@shell/machine-config', true, /.*/);
163
-
164
- const drivers = ctx.keys().filter(path => !path.match(/\.(vue|js)$/)).map(path => path.substr(2));
165
-
166
- return drivers;
167
- },
168
-
169
152
  clusterDrivers() {
170
153
  // The subset of drivers supported by Vue components
171
154
  return [];
package/store/pnap.js ADDED
@@ -0,0 +1,128 @@
1
+ import { base64Encode } from '@shell/utils/crypto';
2
+ import { addParam, addParams } from '@shell/utils/url';
3
+
4
+ const ENDPOINT = 'api.phoenixnap.com';
5
+
6
+ export const state = () => {
7
+ return { cache: {} };
8
+ };
9
+
10
+ export const mutations = {
11
+ setCache(state, { credentialId, key, value }) {
12
+ let cache = state.cache[credentialId];
13
+
14
+ if ( !cache ) {
15
+ cache = {};
16
+ state.cache[credentialId] = cache;
17
+ }
18
+
19
+ cache[key] = value;
20
+ },
21
+ };
22
+
23
+ export const getters = {
24
+ fromCache: state => ({ credentialId, key }) => {
25
+ return state.cache[credentialId]?.[key];
26
+ },
27
+ };
28
+
29
+ export const actions = {
30
+ async osChoices({ dispatch }, { credentialId }) {
31
+ const osList = await dispatch('cachedCommand', { credentialId, command: 'rancher-node-driver/options' });
32
+
33
+ const oses = osList.operatingSystems;
34
+ const result = [];
35
+
36
+ if (Array.isArray(oses)) {
37
+ const map = new Map();
38
+
39
+ for (const os of oses) {
40
+ if (!map.has(os)) {
41
+ map.set(os, true);
42
+ result.push({ value: os, label: os });
43
+ }
44
+ }
45
+ } else {
46
+ result.push({ value: osList.message });
47
+ }
48
+
49
+ return result;
50
+ },
51
+
52
+ async allProducts({ dispatch }, { credentialId }) {
53
+ const out = await dispatch('cachedCommand', { credentialId, command: 'billing/v1/products?productCategory=SERVER' });
54
+
55
+ return out;
56
+ },
57
+
58
+ async cachedCommand({ getters, commit, dispatch }, { credentialId, command }) {
59
+ let out = getters['fromCache']({ credentialId, key: command });
60
+
61
+ if ( !out ) {
62
+ out = await dispatch('request', { credentialId, command });
63
+ commit('setCache', {
64
+ credentialId, key: command, value: out
65
+ });
66
+ }
67
+
68
+ return out;
69
+ },
70
+
71
+ async request({ dispatch }, {
72
+ clientId, clientSecret, credentialId, command, opt, out
73
+ }) {
74
+ opt = opt || {};
75
+
76
+ let url = '/meta/proxy/';
77
+ const body = null;
78
+ let method = 'GET';
79
+
80
+ if ( opt.url ) {
81
+ url += opt.url.replace(/^https?:\/\//, '');
82
+ } else {
83
+ url += `${ ENDPOINT }/${ command }`;
84
+ url = addParam(url, 'per_page', opt.per_page || 1000);
85
+ url = addParams(url, opt.params || {});
86
+ }
87
+
88
+ const headers = { Accept: 'application/json' };
89
+
90
+ if ( credentialId ) {
91
+ headers['X-API-CattleAuth-Header'] = `Bearer credID=${ credentialId } passwordField=token`;
92
+ } else if ( clientId ) {
93
+ const credentials = `${ clientId }:${ clientSecret }`;
94
+ const encoded = base64Encode(credentials);
95
+
96
+ headers['Content-Type'] = 'application/json';
97
+ headers['X-API-Auth-Header'] = `Basic ${ encoded }`;
98
+ url = '/meta/proxy/auth.phoenixnap.com/auth/realms/BMC/protocol/openid-connect/token/';
99
+ // body = `grant_type:client_credentials`;
100
+ method = 'POST';
101
+ }
102
+
103
+ const res = await dispatch('management/request', {
104
+ url,
105
+ method,
106
+ headers,
107
+ data: body,
108
+ redirectUnauthorized: false,
109
+ }, { root: true });
110
+
111
+ if ( out ) {
112
+ out[command] = out[command].concat(res[command]);
113
+ } else {
114
+ out = res;
115
+ }
116
+
117
+ // De-pagination
118
+ if ( res?.links?.pages?.next ) {
119
+ opt.url = res.links.pages.next;
120
+
121
+ return dispatch('request', {
122
+ clientId, clientSecret, credentialId, command, opt, out
123
+ });
124
+ }
125
+
126
+ return out;
127
+ }
128
+ };
package/store/prefs.js CHANGED
@@ -74,7 +74,7 @@ export const HIDE_REPOS = create('hide-repos', [], { parseJSON });
74
74
  export const HIDE_DESC = create('hide-desc', [], { parseJSON });
75
75
  export const HIDE_SENSITIVE = create('hide-sensitive', true, { options: [true, false], parseJSON });
76
76
  export const SHOW_PRE_RELEASE = create('show-pre-release', false, { options: [false, true], parseJSON });
77
- export const SHOW_CHART_MODE = create('chartMode', 'featured', { parseJSON });
77
+ export const SHOW_CHART_MODE = create('chart-mode', 'featured', { parseJSON });
78
78
 
79
79
  export const DATE_FORMAT = create('date-format', 'ddd, MMM D YYYY', {
80
80
  options: [
@@ -109,7 +109,7 @@ export const PLUGIN_DEVELOPER = create('plugin-developer', false, { parseJSON, i
109
109
 
110
110
  export const _RKE1 = 'rke1';
111
111
  export const _RKE2 = 'rke2';
112
- export const PROVISIONER = create('provisioner', _RKE1, { options: [_RKE1, _RKE2] });
112
+ export const PROVISIONER = create('provisioner', _RKE2, { options: [_RKE1, _RKE2] });
113
113
 
114
114
  // Promo for Cluster Tools feature on Cluster Dashboard page
115
115
  export const CLUSTER_TOOLS_TIP = create('hide-cluster-tools-tip', false, { parseJSON });
@@ -120,6 +120,8 @@ export const PSP_DEPRECATION_BANNER = create('hide-psp-deprecation-banner', fals
120
120
  // Maximum number of clusters to show in the slide-in menu
121
121
  export const MENU_MAX_CLUSTERS = create('menu-max-clusters', 4, { options: [2, 3, 4, 5, 6, 7, 8, 9, 10], parseJSON });
122
122
 
123
+ // Prompt for confirm when scaling down node pool in GUI and save the pref
124
+ export const SCALE_POOL_PROMPT = create('scale-pool-prompt', null, { parseJSON });
123
125
  // --------------------
124
126
 
125
127
  const cookiePrefix = 'R_';
@@ -470,11 +472,19 @@ export const actions = {
470
472
  return server;
471
473
  },
472
474
 
473
- setLastVisited({ state, dispatch }, route) {
475
+ setLastVisited({ state, dispatch, getters }, route) {
474
476
  if (!route) {
475
477
  return;
476
478
  }
477
479
 
480
+ // Only save the last visited page if the user has that set as the login route preference
481
+ const afterLoginRoutePref = getters['get'](AFTER_LOGIN_ROUTE);
482
+ const doNotTrackLastVisited = typeof afterLoginRoutePref !== 'string' || afterLoginRoutePref !== 'last-visited';
483
+
484
+ if (doNotTrackLastVisited) {
485
+ return;
486
+ }
487
+
478
488
  const toSave = getLoginRoute(route);
479
489
 
480
490
  return dispatch('set', { key: LAST_VISITED, value: toSave });