@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
@@ -7,6 +7,16 @@ import { convertSelectorObj, matching, matches } from '@shell/utils/selector';
7
7
  import { SEPARATOR } from '@shell/components/DetailTop';
8
8
  import WorkloadService from '@shell/models/workload.service';
9
9
 
10
+ export const defaultContainer = {
11
+ imagePullPolicy: 'Always',
12
+ name: 'container-0',
13
+ securityContext: {
14
+ runAsNonRoot: false,
15
+ readOnlyRootFilesystem: false,
16
+ privileged: false,
17
+ allowPrivilegeEscalation: false,
18
+ }
19
+ };
10
20
  export default class Workload extends WorkloadService {
11
21
  // remove clone as yaml/edit as yaml until API supported
12
22
  get _availableActions() {
@@ -32,11 +42,11 @@ export default class Workload extends WorkloadService {
32
42
  });
33
43
 
34
44
  insertAt(out, 0, {
35
- action: 'redeploy',
36
- label: this.t('action.redeploy'),
37
- icon: 'icon icon-refresh',
38
- enabled: !!this.links.update,
39
- bulkable: true,
45
+ action: 'redeploy',
46
+ label: this.t('action.redeploy'),
47
+ icon: 'icon icon-refresh',
48
+ enabled: !!this.links.update,
49
+ bulkable: true,
40
50
  });
41
51
 
42
52
  insertAt(out, 0, {
@@ -57,11 +67,11 @@ export default class Workload extends WorkloadService {
57
67
  insertAt(out, 0, { divider: true }) ;
58
68
 
59
69
  insertAt(out, 0, {
60
- action: 'openShell',
61
- enabled: !!this.links.view,
62
- icon: 'icon icon-fw icon-chevron-right',
63
- label: this.t('action.openShell'),
64
- total: 1,
70
+ action: 'openShell',
71
+ enabled: !!this.links.view,
72
+ icon: 'icon icon-fw icon-chevron-right',
73
+ label: this.t('action.openShell'),
74
+ total: 1,
65
75
  });
66
76
 
67
77
  const toFilter = ['cloneYaml'];
@@ -98,7 +108,9 @@ export default class Workload extends WorkloadService {
98
108
  if (!spec.template) {
99
109
  spec.template = {
100
110
  spec: {
101
- restartPolicy: this.type === WORKLOAD_TYPES.JOB ? 'Never' : 'Always', containers: [{ imagePullPolicy: 'Always', name: 'container-0' }], initContainers: []
111
+ restartPolicy: this.type === WORKLOAD_TYPES.JOB ? 'Never' : 'Always',
112
+ containers: [{ ...defaultContainer }],
113
+ initContainers: []
102
114
  }
103
115
  };
104
116
  }
@@ -109,14 +121,14 @@ export default class Workload extends WorkloadService {
109
121
  vm.$set(this, 'spec', spec);
110
122
  }
111
123
 
112
- toggleRollbackModal( resources = this ) {
124
+ toggleRollbackModal( workload = this ) {
113
125
  this.$dispatch('promptModal', {
114
- resources,
115
- component: 'RollbackWorkloadDialog'
126
+ componentProps: { workload },
127
+ component: 'RollbackWorkloadDialog'
116
128
  });
117
129
  }
118
130
 
119
- async rollBackWorkload( cluster, workload, rollbackRequestData ) {
131
+ async rollBackWorkload( cluster, workload, type, rollbackRequestData ) {
120
132
  const rollbackRequestBody = JSON.stringify(rollbackRequestData);
121
133
 
122
134
  if ( Array.isArray( workload ) ) {
@@ -125,8 +137,15 @@ export default class Workload extends WorkloadService {
125
137
  const namespace = workload.metadata.namespace;
126
138
  const workloadName = workload.metadata.name;
127
139
 
128
- // Ensure we go out to the correct cluster
129
- await this.patch(rollbackRequestBody, { url: `/k8s/clusters/${ cluster.id }/apis/apps/v1/namespaces/${ namespace }/deployments/${ workloadName }` });
140
+ /**
141
+ * Ensure we go out to the correct cluster
142
+ *
143
+ * Build the request body in the same format that kubectl
144
+ * uses to call the Kubernetes API to roll back a workload.
145
+ * To see an example request body, run:
146
+ * kubectl rollout undo deployment/[deployment name] --to-revision=[revision number] -v=8
147
+ */
148
+ await this.patch(rollbackRequestBody, { url: `/k8s/clusters/${ cluster.id }/apis/apps/v1/namespaces/${ namespace }/${ type }/${ workloadName }` });
130
149
  }
131
150
 
132
151
  pause() {
@@ -221,17 +240,17 @@ export default class Workload extends WorkloadService {
221
240
  type: 'subDomain',
222
241
  },
223
242
  {
224
- nullable: false,
225
- path: 'spec',
226
- required: true,
227
- type: 'object',
228
- validators: ['containerImages'],
243
+ nullable: false,
244
+ path: 'spec',
245
+ required: true,
246
+ type: 'object',
247
+ validators: ['containerImages'],
229
248
  },
230
249
  {
231
- nullable: true,
232
- path: `${ podSpecPath }.affinity`,
233
- type: 'object',
234
- validators: ['podAffinity'],
250
+ nullable: true,
251
+ path: `${ podSpecPath }.affinity`,
252
+ type: 'object',
253
+ validators: ['podAffinity'],
235
254
  }
236
255
  ];
237
256
 
@@ -311,22 +330,22 @@ export default class Workload extends WorkloadService {
311
330
  const type = this._type ? this._type : this.type;
312
331
 
313
332
  const detailItem = {
314
- endpoint: {
333
+ endpoint: {
315
334
  label: 'Endpoints',
316
335
  content: this.endpoint,
317
336
  formatter: 'WorkloadDetailEndpoints'
318
337
  },
319
- ready: {
320
- label: 'Ready',
321
- content: this.ready
338
+ ready: {
339
+ label: 'Ready',
340
+ content: this.ready
322
341
  },
323
- upToDate: {
324
- label: 'Up-to-date',
325
- content: this.upToDate
342
+ upToDate: {
343
+ label: 'Up-to-date',
344
+ content: this.upToDate
326
345
  },
327
346
  available: {
328
- label: 'Available',
329
- content: this.available
347
+ label: 'Available',
348
+ content: this.available
330
349
  }
331
350
  };
332
351
 
@@ -610,6 +629,18 @@ export default class Workload extends WorkloadService {
610
629
  return out;
611
630
  }
612
631
 
632
+ get currentRevisionNumber() {
633
+ if (this.ownedByWorkload || this.kind === 'Job' || this.kind === 'CronJob') {
634
+ return undefined;
635
+ }
636
+ if (this.kind === 'Deployment') {
637
+ return this.metadata.annotations['deployment.kubernetes.io/revision'];
638
+ }
639
+
640
+ // 'DaemonSet', 'StatefulSet'
641
+ return this.metadata.generation;
642
+ }
643
+
613
644
  async matchingPods() {
614
645
  const all = await this.$dispatch('findAll', { type: POD });
615
646
  const allInNamespace = all.filter(pod => pod.metadata.namespace === this.metadata.namespace);
package/nuxt.config.js CHANGED
@@ -22,23 +22,22 @@ export const API_PATH = api;
22
22
 
23
23
  const dev = (process.env.NODE_ENV !== 'production');
24
24
  const devPorts = dev || process.env.DEV_PORTS === 'true';
25
- const version = process.env.VERSION ||
26
- process.env.DRONE_TAG ||
27
- process.env.DRONE_VERSION ||
28
- require('./package.json').version;
25
+
26
+ // human readable version used on rancher dashboard about page
27
+ const dashboardVersion = process.env.DASHBOARD_VERSION;
29
28
 
30
29
  const prime = process.env.PRIME;
31
30
 
32
31
  const pl = process.env.PL || STANDARD;
33
- const commit = process.env.COMMIT || 'head';
34
32
  const perfTest = (process.env.PERF_TEST === 'true'); // Enable performance testing when in dev
33
+ const instrumentCode = (process.env.TEST_INSTRUMENT === 'true'); // Instrument code for code coverage in e2e tests
35
34
 
36
35
  // Allow skipping of eslint check
37
36
  // 0 = Skip browser and console checks
38
37
  // 1 = Skip browser check
39
38
  // 2 = Do not skip any checks
40
39
  const skipEsLintCheckStr = (process.env.SKIP_ESLINT || '');
41
- const skipEsLintCheck = parseInt(skipEsLintCheckStr, 10) || 2;
40
+ let skipEsLintCheck = parseInt(skipEsLintCheckStr, 10) || 2;
42
41
 
43
42
  // ===============================================================================================
44
43
  // Nuxt configuration
@@ -55,6 +54,21 @@ export default function(dir, _appConfig) {
55
54
  let COMPONENTS_DIR = path.join(SHELL_ABS, 'rancher-components');
56
55
  let typescript = {};
57
56
 
57
+ if (fs.existsSync(SHELL_ABS)) {
58
+ const stat = fs.lstatSync(SHELL_ABS);
59
+
60
+ // If @rancher/shell is a symlink, then use the components folder for it
61
+ if (stat.isSymbolicLink()) {
62
+ const REAL_SHELL_ABS = fs.realpathSync(SHELL_ABS); // In case the shell is being linked via 'yarn link'
63
+
64
+ COMPONENTS_DIR = path.join(REAL_SHELL_ABS, '..', 'pkg', 'rancher-components', 'src', 'components');
65
+
66
+ // For now, skip eslint check when being linked via yarn link - pkg folder is linked otherwise
67
+ // This will change when we remove nuxt
68
+ skipEsLintCheck = true;
69
+ }
70
+ }
71
+
58
72
  // If we have a local folder named 'shell' then use that rather than the one in node_modules
59
73
  // This will be the case in the main dashboard repository.
60
74
  if (fs.existsSync(path.join(dir, 'shell'))) {
@@ -69,8 +83,21 @@ export default function(dir, _appConfig) {
69
83
  }
70
84
  }
71
85
 
86
+ // Instrument code for tests
87
+ const babelPlugins = [
88
+ // TODO: Browser support
89
+ // ['@babel/plugin-transform-modules-commonjs'],
90
+ ['@babel/plugin-proposal-private-property-in-object', { loose: true }]
91
+ ];
92
+
93
+ if (instrumentCode) {
94
+ babelPlugins.push('babel-plugin-istanbul');
95
+
96
+ console.warn('Instrumenting code for coverage'); // eslint-disable-line no-console
97
+ }
98
+
72
99
  // ===============================================================================================
73
- // Functions for the UI Pluginas
100
+ // Functions for the UI Plugins
74
101
  // ===============================================================================================
75
102
 
76
103
  const appConfig = _appConfig || {};
@@ -210,7 +237,11 @@ export default function(dir, _appConfig) {
210
237
 
211
238
  if (index !== -1 && (index + 1) < ctx.length) {
212
239
  const pkg = ctx[index + 1];
213
- const p = path.resolve(dir, 'pkg', pkg, resource.request.substr(5));
240
+ let p = path.resolve(dir, 'pkg', pkg, resource.request.substr(5));
241
+
242
+ if (resource.request.startsWith(`@pkg/${ pkg }`)) {
243
+ p = path.resolve(dir, 'pkg', resource.request.substr(5));
244
+ }
214
245
 
215
246
  resource.request = p;
216
247
  }
@@ -251,7 +282,7 @@ export default function(dir, _appConfig) {
251
282
  console.log(`Build: ${ dev ? 'Development' : 'Production' }`); // eslint-disable-line no-console
252
283
 
253
284
  if ( !dev ) {
254
- console.log(`Version: ${ version } (${ commit })`); // eslint-disable-line no-console
285
+ console.log(`Version: ${ dashboardVersion }`); // eslint-disable-line no-console
255
286
  }
256
287
 
257
288
  if ( resourceBase ) {
@@ -290,8 +321,6 @@ export default function(dir, _appConfig) {
290
321
 
291
322
  // Configuration visible to the client, https://nuxtjs.org/api/configuration-env
292
323
  env: {
293
- commit,
294
- version,
295
324
  dev,
296
325
  pl,
297
326
  perfTest,
@@ -300,7 +329,8 @@ export default function(dir, _appConfig) {
300
329
  api
301
330
  },
302
331
 
303
- publicRuntimeConfig: { rancherEnv },
332
+ // vars accessible via this.$config https://nuxtjs.org/docs/configuration-glossary/configuration-runtime-config/
333
+ publicRuntimeConfig: { rancherEnv, dashboardVersion },
304
334
 
305
335
  buildDir: dev ? '.nuxt' : '.nuxt-prod',
306
336
 
@@ -324,9 +354,9 @@ export default function(dir, _appConfig) {
324
354
 
325
355
  // Axios: https://axios.nuxtjs.org/options
326
356
  axios: {
327
- https: true,
328
- proxy: true,
329
- retry: { retries: 0 },
357
+ https: true,
358
+ proxy: true,
359
+ retry: { retries: 0 },
330
360
  // debug: true
331
361
  },
332
362
 
@@ -356,12 +386,12 @@ export default function(dir, _appConfig) {
356
386
  ],
357
387
 
358
388
  dir: {
359
- assets: path.join(SHELL, 'assets'),
360
- layouts: path.join(SHELL, 'layouts'),
361
- middleware: path.join(SHELL, 'middleware'),
362
- pages: path.join(SHELL, 'pages'),
363
- static: path.join(SHELL, 'static'),
364
- store: path.join(SHELL, 'store'),
389
+ assets: path.posix.join(SHELL, 'assets'),
390
+ layouts: path.posix.join(SHELL, 'layouts'),
391
+ middleware: path.posix.join(SHELL, 'middleware'),
392
+ pages: path.posix.join(SHELL, 'pages'),
393
+ static: path.posix.join(SHELL, 'static'),
394
+ store: path.posix.join(SHELL, 'store'),
365
395
  },
366
396
 
367
397
  watchers: { webpack: { ignore: watcherIgnores } },
@@ -456,7 +486,7 @@ export default function(dir, _appConfig) {
456
486
 
457
487
  // And substitute our own loader for images
458
488
  config.module.rules.unshift({
459
- test: /\.(png|jpe?g|gif|svg|webp)$/,
489
+ test: /\.(png|jpe?g|gif|svg|webp)$/,
460
490
  use: [
461
491
  {
462
492
  loader: 'url-loader',
@@ -496,7 +526,7 @@ export default function(dir, _appConfig) {
496
526
 
497
527
  // Prevent warning in log with the md files in the content folder
498
528
  config.module.rules.push({
499
- test: /\.md$/,
529
+ test: /\.md$/,
500
530
  use: [
501
531
  {
502
532
  loader: 'frontmatter-markdown-loader',
@@ -515,20 +545,15 @@ export default function(dir, _appConfig) {
515
545
  require.resolve('@nuxt/babel-preset-app'),
516
546
  {
517
547
  // buildTarget: isServer ? 'server' : 'client',
518
- corejs: { version: 3 },
519
- targets: isServer ? { node: '12' } : { browsers: ['last 2 versions'] },
520
- modern: !isServer
548
+ corejs: { version: 3 },
549
+ targets: isServer ? { node: '12' } : { browsers: ['last 2 versions'] },
550
+ modern: !isServer
521
551
  }
522
552
  ],
523
553
  '@babel/preset-typescript',
524
554
  ];
525
555
  },
526
- plugins: [
527
- // TODO: Browser support
528
- // ['@babel/plugin-transform-modules-commonjs'],
529
- ['@babel/plugin-proposal-private-property-in-object', { loose: true }],
530
- 'babel-plugin-istanbul'
531
- ],
556
+ plugins: babelPlugins
532
557
  }
533
558
  },
534
559
 
@@ -638,8 +663,8 @@ export default function(dir, _appConfig) {
638
663
  key: fs.readFileSync(path.resolve(dir, SHELL, 'server/server.key')),
639
664
  cert: fs.readFileSync(path.resolve(dir, SHELL, 'server/server.crt'))
640
665
  } : null),
641
- port: (devPorts ? 8005 : 80),
642
- host: '0.0.0.0',
666
+ port: (devPorts ? 8005 : 80),
667
+ host: '0.0.0.0',
643
668
  },
644
669
 
645
670
  // Server middleware
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rancher/shell",
3
- "version": "0.2.5",
3
+ "version": "0.3.1",
4
4
  "description": "Rancher Dashboard Shell",
5
5
  "repository": "https://github.com/rancherlabs/dashboard",
6
6
  "license": "Apache-2.0",
@@ -113,7 +113,7 @@
113
113
  "nyc": "15.1.0",
114
114
  "papaparse": "5.3.0",
115
115
  "portal-vue": "2.1.7",
116
- "rancher-icons": "rancher/icons#v2.0.9",
116
+ "rancher-icons": "rancher/icons#v2.0.13",
117
117
  "require-extension-hooks": "0.3.3",
118
118
  "require-extension-hooks-babel": "1.0.0",
119
119
  "require-extension-hooks-vue": "3.0.0",
@@ -143,11 +143,11 @@
143
143
  "vuex": "3.6.2",
144
144
  "webpack-bundle-analyzer": "4.5.0",
145
145
  "webpack-virtual-modules": "0.4.3",
146
- "xterm": "4.9.0",
147
- "xterm-addon-fit": "0.4.0",
148
- "xterm-addon-search": "0.7.0",
149
- "xterm-addon-web-links": "0.4.0",
150
- "xterm-addon-webgl": "0.9.0",
146
+ "xterm": "5.0.0",
147
+ "xterm-addon-fit": "0.6.0",
148
+ "xterm-addon-search": "0.10.0",
149
+ "xterm-addon-web-links": "0.7.0",
150
+ "xterm-addon-webgl": "0.13.0",
151
151
  "worker-loader": "3.0.8",
152
152
  "yarn": "1.22.18"
153
153
  },
package/pages/about.vue CHANGED
@@ -16,11 +16,12 @@ export default {
16
16
  },
17
17
  data() {
18
18
  return {
19
- settings: null,
19
+ dashboardVersion: this.$config.dashboardVersion,
20
+ settings: null,
20
21
  SETTING
21
22
  };
22
23
  },
23
- computed: {
24
+ computed: {
24
25
  rancherVersion() {
25
26
  return this.settings.find(s => s.id === SETTING.VERSION_RANCHER);
26
27
  },
@@ -117,10 +118,21 @@ export default {
117
118
  target="_blank"
118
119
  rel="nofollow noopener noreferrer"
119
120
  >
120
- {{ appName }}
121
+ {{ t("about.versions.rancher") }}
121
122
  </a>
122
123
  </td><td>{{ rancherVersion.value }}</td>
123
124
  </tr>
125
+ <tr v-if="dashboardVersion">
126
+ <td>
127
+ <a
128
+ href="https://github.com/rancher/dashboard"
129
+ target="_blank"
130
+ rel="nofollow noopener noreferrer"
131
+ >
132
+ {{ t("generic.dashboard") }}
133
+ </a>
134
+ </td><td>{{ dashboardVersion }}</td>
135
+ </tr>
124
136
  <tr v-if="cliVersion">
125
137
  <td>
126
138
  <a
@@ -43,7 +43,7 @@ export default {
43
43
  canChangePassword: false
44
44
  };
45
45
  },
46
- computed: {
46
+ computed: {
47
47
  ...mapGetters({ t: 'i18n/t' }),
48
48
 
49
49
  apiKeyheaders() {
@@ -116,8 +116,8 @@ export default {
116
116
  product: getProduct(),
117
117
 
118
118
  username,
119
- remember: !!username,
120
- password: '',
119
+ remember: !!username,
120
+ password: '',
121
121
 
122
122
  timedOut: this.$route.query[TIMED_OUT] === _FLAGGED,
123
123
  loggedOut: this.$route.query[LOGGED_OUT] === _FLAGGED,
@@ -125,7 +125,7 @@ export default {
125
125
 
126
126
  providers: [],
127
127
  providerComponents: [],
128
- customLoginError: {}
128
+ customLoginError: {}
129
129
  };
130
130
  },
131
131
 
@@ -168,6 +168,10 @@ export default {
168
168
  return "kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{\"\\n\"}}'";
169
169
  },
170
170
 
171
+ hasLoginMessage() {
172
+ return this.errorToDisplay || this.loggedOut || this.timedOut;
173
+ }
174
+
171
175
  },
172
176
 
173
177
  created() {
@@ -225,6 +229,10 @@ export default {
225
229
  }
226
230
  },
227
231
 
232
+ handleProviderError(err) {
233
+ this.err = err;
234
+ },
235
+
228
236
  async loginLocal(buttonCb) {
229
237
  try {
230
238
  await this.$store.dispatch('auth/login', {
@@ -290,10 +298,13 @@ export default {
290
298
  <p class="text-center">
291
299
  {{ t('login.howdy') }}
292
300
  </p>
293
- <h1 class="text-center">
301
+ <h1 class="text-center login-welcome">
294
302
  {{ t('login.welcome', {vendor}) }}
295
303
  </h1>
296
- <div class="login-messages">
304
+ <div
305
+ class="login-messages"
306
+ :class="{'login-messages--hasContent': hasLoginMessage}"
307
+ >
297
308
  <Banner
298
309
  v-if="errorToDisplay"
299
310
  :label="errorToDisplay"
@@ -372,7 +383,7 @@ export default {
372
383
 
373
384
  <div
374
385
  v-if="(!hasLocal || (hasLocal && !showLocal)) && providers.length"
375
- class="mt-30"
386
+ :class="{'mt-30': !hasLoginMessage}"
376
387
  >
377
388
  <component
378
389
  :is="providerComponents[idx]"
@@ -383,12 +394,13 @@ export default {
383
394
  :name="name"
384
395
  :open="!showLocal"
385
396
  @showInputs="showLocal = false"
397
+ @error="handleProviderError"
386
398
  />
387
399
  </div>
388
400
  <template v-if="hasLocal">
389
401
  <form
390
402
  v-if="showLocal"
391
- class="mt-40"
403
+ :class="{'mt-30': !hasLoginMessage}"
392
404
  >
393
405
  <div class="span-6 offset-3">
394
406
  <div class="mb-20">
@@ -490,6 +502,24 @@ export default {
490
502
  object-fit: cover;
491
503
  }
492
504
 
505
+ .login-welcome {
506
+ margin: 0
507
+ }
508
+
509
+ .login-messages {
510
+ align-items: center;
511
+
512
+ .banner {
513
+ margin: 5px;
514
+ }
515
+ h4 {
516
+ margin: 0;
517
+ }
518
+ &--hasContent {
519
+ min-height: 70px;
520
+ }
521
+ }
522
+
493
523
  .login-messages, .first-login-message {
494
524
  display: flex;
495
525
  justify-content: center;
@@ -144,18 +144,18 @@ export default {
144
144
 
145
145
  return {
146
146
  productName,
147
- vendor: getVendor(),
148
- product: getProduct(),
149
- step: parseInt(route.query.step, 10) || 1,
147
+ vendor: getVendor(),
148
+ product: getProduct(),
149
+ step: parseInt(route.query.step, 10) || 1,
150
150
 
151
- useRandom: true,
152
- haveCurrent: !!current,
153
- username: me?.loginName || 'admin',
151
+ useRandom: true,
152
+ haveCurrent: !!current,
153
+ username: me?.loginName || 'admin',
154
154
  isFirstLogin,
155
155
  mustChangePassword,
156
156
  current,
157
- password: randomStr(),
158
- confirm: '',
157
+ password: randomStr(),
158
+ confirm: '',
159
159
 
160
160
  v3User,
161
161
 
@@ -222,9 +222,9 @@ export default {
222
222
 
223
223
  if ( this.mustChangePassword ) {
224
224
  await this.$store.dispatch('rancher/request', {
225
- url: '/v3/users?action=changepassword',
226
- method: 'post',
227
- data: {
225
+ url: '/v3/users?action=changepassword',
226
+ method: 'post',
227
+ data: {
228
228
  currentPassword: this.current,
229
229
  newPassword: this.password
230
230
  },
@@ -2,8 +2,8 @@
2
2
  import ResourceDetail from '@shell/components/ResourceDetail';
3
3
 
4
4
  export default {
5
- name: 'ClusterResourcedId',
6
- components: { ResourceDetail },
5
+ name: 'ClusterResourcedId',
6
+ components: { ResourceDetail },
7
7
  };
8
8
  </script>
9
9
 
@@ -30,8 +30,8 @@ export default {
30
30
 
31
31
  data() {
32
32
  return {
33
- showLastVersions: 10,
34
- showMoreVersions: false,
33
+ showLastVersions: 10,
34
+ showMoreVersions: false,
35
35
  };
36
36
  },
37
37
 
@@ -96,8 +96,8 @@ export default {
96
96
  this.$router.push({
97
97
  name: 'c-cluster-apps-charts-install',
98
98
  params: {
99
- cluster: this.$route.params.cluster,
100
- product: this.$store.getters['productId'],
99
+ cluster: this.$route.params.cluster,
100
+ product: this.$store.getters['productId'],
101
101
  },
102
102
  query: {
103
103
  [REPO_TYPE]: this.query.repoType,