@rancher/shell 0.1.2 → 0.1.4

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 (347) hide show
  1. package/assets/brand/suse/dark/rancher-logo.svg +1 -148
  2. package/assets/brand/suse/rancher-logo.svg +1 -130
  3. package/assets/images/featured/img1.jpg +0 -0
  4. package/assets/images/featured.jpg +0 -0
  5. package/assets/images/generic-plugin.svg +7 -0
  6. package/assets/styles/themes/_dark.scss +3 -0
  7. package/assets/styles/themes/_light.scss +3 -0
  8. package/assets/styles/themes/_suse.scss +1 -1
  9. package/assets/translations/en-us.yaml +209 -813
  10. package/assets/translations/zh-hans.yaml +28 -792
  11. package/components/ActionMenu.vue +3 -3
  12. package/components/AsyncButton.vue +17 -2
  13. package/components/ButtonDropdown.vue +4 -0
  14. package/components/Carousel.vue +291 -0
  15. package/components/CodeMirror.vue +6 -8
  16. package/components/CommunityLinks.vue +70 -19
  17. package/components/ContainerResourceLimit.vue +14 -0
  18. package/components/CruResource.vue +11 -3
  19. package/components/Dialog.vue +102 -0
  20. package/components/ExplorerMembers.vue +121 -0
  21. package/components/ExplorerProjectsNamespaces.vue +404 -0
  22. package/components/GrafanaDashboard.vue +17 -2
  23. package/components/IconMessage.vue +9 -1
  24. package/components/LocaleSelector.vue +114 -0
  25. package/components/PromptModal.vue +2 -3
  26. package/components/ResourceList/index.vue +1 -1
  27. package/components/ResourceTable.vue +9 -7
  28. package/components/SimpleBox.vue +6 -4
  29. package/components/SingleClusterInfo.vue +1 -1
  30. package/components/SortableTable/index.vue +18 -25
  31. package/components/SortableTable/selection.js +1 -0
  32. package/components/Tabbed/Tab.vue +5 -0
  33. package/components/Tabbed/index.vue +29 -2
  34. package/components/auth/AzureWarning.vue +5 -1
  35. package/components/auth/Principal.vue +2 -1
  36. package/components/auth/RoleDetailEdit.vue +18 -11
  37. package/components/fleet/FleetBundles.vue +8 -3
  38. package/components/fleet/FleetRepos.vue +0 -2
  39. package/components/fleet/FleetSummary.vue +6 -0
  40. package/components/form/KeyValue.vue +80 -58
  41. package/components/form/NameNsDescription.vue +12 -8
  42. package/components/form/NodeScheduling.vue +1 -1
  43. package/components/form/ResourceTabs/index.vue +5 -1
  44. package/components/form/WorkloadPorts.vue +1 -1
  45. package/components/formatter/ClusterLink.vue +3 -7
  46. package/components/formatter/WorkloadHealthScale.vue +1 -1
  47. package/components/nav/Header.vue +9 -9
  48. package/components/nav/NamespaceFilter.vue +10 -7
  49. package/components/nav/TopLevelMenu.vue +10 -65
  50. package/components/nav/WindowManager/ContainerLogs.vue +1 -1
  51. package/config/footer.js +13 -14
  52. package/config/labels-annotations.js +2 -1
  53. package/config/product/explorer.js +5 -4
  54. package/config/product/harvester-manager.js +64 -2
  55. package/config/product/legacy.js +0 -47
  56. package/config/product/manager.js +9 -0
  57. package/config/product/multi-cluster-apps.js +0 -12
  58. package/config/product/settings.js +12 -1
  59. package/config/product/uiplugins.js +17 -0
  60. package/config/settings.js +37 -72
  61. package/config/table-headers.js +0 -1
  62. package/config/types.js +9 -25
  63. package/config/uiplugins.js +60 -0
  64. package/content/docs/en-us/getting-started.md +1 -26
  65. package/core/plugin-routes.ts +34 -22
  66. package/core/plugin.ts +15 -3
  67. package/core/plugins-loader.js +2 -0
  68. package/core/plugins.js +91 -36
  69. package/core/types.ts +7 -1
  70. package/detail/provisioning.cattle.io.cluster.vue +15 -2
  71. package/detail/workload/index.vue +11 -5
  72. package/{components/dialog → dialog}/AddClusterMemberDialog.vue +0 -0
  73. package/{components/dialog → dialog}/AddCustomBadgeDialog.vue +0 -0
  74. package/{components/dialog → dialog}/AddProjectMemberDialog.vue +0 -0
  75. package/{components/dialog → dialog}/AddonConfigConfirmationDialog.vue +0 -0
  76. package/dialog/DiagnosticTimingsDialog.vue +116 -0
  77. package/{components/dialog → dialog}/DrainNode.vue +0 -0
  78. package/{components/dialog → dialog}/ForceMachineRemoveDialog.vue +0 -0
  79. package/{components/dialog → dialog}/GenericPrompt.vue +0 -0
  80. package/{components/dialog → dialog}/RollbackWorkloadDialog.vue +0 -0
  81. package/{components/dialog → dialog}/RotateCertificatesDialog.vue +9 -3
  82. package/{components/dialog → dialog}/RotateEncryptionKeyDialog.vue +0 -0
  83. package/{components/dialog → dialog}/SaveAsRKETemplateDialog.vue +0 -0
  84. package/{components/dialog → dialog}/ScaleMachineDownDialog.vue +0 -0
  85. package/edit/auth/azuread.vue +44 -6
  86. package/edit/management.cattle.io.project.vue +2 -2
  87. package/edit/namespace.vue +17 -10
  88. package/edit/networking.k8s.io.ingress/index.vue +2 -2
  89. package/edit/persistentvolume/index.vue +3 -0
  90. package/edit/persistentvolumeclaim.vue +1 -0
  91. package/edit/pod.vue +27 -0
  92. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +1 -1
  93. package/edit/provisioning.cattle.io.cluster/MachinePool.vue +33 -5
  94. package/edit/provisioning.cattle.io.cluster/rke2.vue +76 -5
  95. package/edit/service.vue +8 -6
  96. package/edit/workload/__tests__/Upgrading.test.ts +1 -0
  97. package/edit/workload/index.vue +375 -15
  98. package/edit/workload/mixins/workload.js +62 -7
  99. package/edit/workload/storage/ContainerMountPaths.vue +240 -0
  100. package/edit/workload/storage/Mount.vue +1 -0
  101. package/edit/workload/storage/awsElasticBlockStore.vue +20 -1
  102. package/edit/workload/storage/azureDisk.vue +22 -2
  103. package/edit/workload/storage/azureFile.vue +20 -2
  104. package/edit/workload/storage/csi/index.vue +23 -1
  105. package/edit/workload/storage/gcePersistentDisk.vue +20 -2
  106. package/edit/workload/storage/index.vue +23 -49
  107. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +1 -0
  108. package/edit/workload/storage/vsphereVolume.vue +11 -1
  109. package/layouts/default.vue +63 -32
  110. package/layouts/error.vue +5 -1
  111. package/layouts/home.vue +14 -5
  112. package/layouts/plain.vue +10 -5
  113. package/list/harvesterhci.io.management.cluster.vue +74 -33
  114. package/list/management.cattle.io.setting.vue +3 -3
  115. package/list/namespace.vue +3 -5
  116. package/list/provisioning.cattle.io.cluster.vue +1 -1
  117. package/machine-config/amazonec2.vue +2 -0
  118. package/machine-config/harvester.vue +100 -51
  119. package/middleware/authenticated.js +56 -52
  120. package/mixins/form-validation.js +1 -1
  121. package/mixins/resource-fetch.js +3 -1
  122. package/models/catalog.cattle.io.uiplugin.js +34 -0
  123. package/models/cluster/node.js +25 -2
  124. package/models/fleet.cattle.io.bundle.js +27 -20
  125. package/models/harvesterhci.io.management.cluster.js +200 -5
  126. package/models/management.cattle.io.cluster.js +1 -1
  127. package/models/management.cattle.io.clusterroletemplatebinding.js +9 -0
  128. package/models/management.cattle.io.project.js +23 -2
  129. package/models/namespace.js +19 -3
  130. package/models/pod.js +19 -2
  131. package/models/provisioning.cattle.io.cluster.js +16 -6
  132. package/models/workload.js +9 -246
  133. package/models/workload.service.js +314 -0
  134. package/nuxt.config.js +80 -34
  135. package/package.json +107 -108
  136. package/pages/auth/login.vue +11 -2
  137. package/pages/auth/setup.vue +1 -1
  138. package/pages/c/_cluster/_product/members/index.vue +3 -93
  139. package/pages/c/_cluster/_product/projectsnamespaces.vue +6 -403
  140. package/pages/c/_cluster/apps/charts/index.vue +46 -1
  141. package/pages/c/_cluster/apps/charts/install.vue +10 -9
  142. package/pages/c/_cluster/explorer/index.vue +72 -9
  143. package/pages/c/_cluster/explorer/tools/index.vue +12 -5
  144. package/pages/c/_cluster/mcapps/index.vue +1 -1
  145. package/pages/c/_cluster/settings/brand.vue +0 -40
  146. package/pages/c/_cluster/settings/links.vue +200 -0
  147. package/pages/c/_cluster/settings/performance.vue +19 -16
  148. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +232 -0
  149. package/pages/c/_cluster/uiplugins/InstallDialog.vue +242 -0
  150. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +284 -0
  151. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +130 -0
  152. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +253 -0
  153. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +115 -0
  154. package/pages/c/_cluster/uiplugins/index.vue +694 -0
  155. package/pages/diagnostic.vue +185 -101
  156. package/pages/docs/_doc.vue +3 -1
  157. package/pages/fail-whale.vue +1 -10
  158. package/pages/home.vue +21 -56
  159. package/pages/index.vue +18 -4
  160. package/pages/prefs.vue +108 -86
  161. package/pages/safeMode.vue +17 -0
  162. package/pages/support/index.vue +23 -15
  163. package/pkg/auto-import.js +44 -7
  164. package/pkg/dynamic-importer.lib.js +4 -0
  165. package/pkg/dynamic-plugin-loader.js +28 -0
  166. package/pkg/import.js +2 -2
  167. package/pkg/model-loader-require.lib.js +3 -0
  168. package/pkg/vue.config.js +9 -6
  169. package/plugins/dashboard-store/model-loader-require.js +12 -0
  170. package/plugins/dashboard-store/model-loader.js +4 -1
  171. package/plugins/dashboard-store/resource-class.js +12 -5
  172. package/plugins/formatters.js +15 -0
  173. package/plugins/plugin.js +56 -4
  174. package/plugins/steve/actions.js +1 -1
  175. package/plugins/steve/index.js +6 -4
  176. package/plugins/steve/mutations.js +1 -1
  177. package/plugins/steve/subscribe.js +89 -56
  178. package/plugins/steve/web-worker.steve-sub-worker.js +24 -15
  179. package/promptRemove/management.cattle.io.globalrole.vue +47 -0
  180. package/promptRemove/management.cattle.io.roletemplate.vue +47 -0
  181. package/promptRemove/mixin/roleDeletionCheck.js +97 -0
  182. package/rancher-components/Form/Checkbox/Checkbox.test.ts +77 -0
  183. package/rancher-components/Form/Checkbox/Checkbox.vue +12 -2
  184. package/scripts/build-pkg.sh +48 -2
  185. package/scripts/drone-build-pkg.sh +31 -0
  186. package/scripts/publish-shell.sh +11 -12
  187. package/scripts/serve-pkgs +17 -10
  188. package/scripts/sync-shell-deps +37 -0
  189. package/store/catalog.js +12 -9
  190. package/store/i18n.js +26 -12
  191. package/store/index.js +4 -181
  192. package/store/prefs.js +46 -2
  193. package/store/type-map.js +47 -33
  194. package/store/uiplugins.ts +15 -61
  195. package/utils/__tests__/object.test.ts +0 -24
  196. package/utils/__tests__/selector.test.ts +1 -1
  197. package/utils/cluster.js +1 -1
  198. package/utils/custom-validators.js +1 -12
  199. package/utils/dynamic-importer.js +5 -1
  200. package/utils/grafana.js +2 -6
  201. package/utils/socket.js +41 -20
  202. package/utils/string.js +1 -7
  203. package/utils/validators/formRules/__tests__/index.test.ts +108 -0
  204. package/utils/validators/formRules/index.ts +9 -1
  205. package/utils/validators/setting.js +0 -35
  206. package/yarn-error.log +195 -0
  207. package/components/FilterLabel.vue +0 -254
  208. package/components/HarvesterUpgradeProgressBarList.vue +0 -109
  209. package/components/VMConsoleBar.vue +0 -87
  210. package/components/dialog/harvester/AddHotplugModal.vue +0 -159
  211. package/components/dialog/harvester/BackupModal.vue +0 -117
  212. package/components/dialog/harvester/CloneTemplate.vue +0 -125
  213. package/components/dialog/harvester/EjectCDROMDialog.vue +0 -157
  214. package/components/dialog/harvester/ExportImageDialog.vue +0 -152
  215. package/components/dialog/harvester/MaintenanceDialog.vue +0 -94
  216. package/components/dialog/harvester/MigrationDialog.vue +0 -154
  217. package/components/dialog/harvester/RestoreDialog.vue +0 -153
  218. package/components/dialog/harvester/SupportBundle.vue +0 -217
  219. package/components/dialog/harvester/UnplugVolume.vue +0 -108
  220. package/components/form/SerialConsole/index.vue +0 -267
  221. package/components/formatter/AttachVMWithName.vue +0 -46
  222. package/components/formatter/CloudInitType.vue +0 -27
  223. package/components/formatter/HarvesterBackupTargetValidation.vue +0 -43
  224. package/components/formatter/HarvesterCPUUsed.vue +0 -122
  225. package/components/formatter/HarvesterDiskState.vue +0 -66
  226. package/components/formatter/HarvesterHostName.vue +0 -66
  227. package/components/formatter/HarvesterIpAddress.vue +0 -90
  228. package/components/formatter/HarvesterMemoryUsed.vue +0 -140
  229. package/components/formatter/HarvesterMigrationState.vue +0 -85
  230. package/components/formatter/HarvesterNodeName.vue +0 -49
  231. package/components/formatter/HarvesterStorageUsed.vue +0 -194
  232. package/components/formatter/HarvesterVmState.vue +0 -123
  233. package/components/nav/HarvesterUpgrade.vue +0 -232
  234. package/components/novnc/NovncConsole.vue +0 -93
  235. package/components/novnc/NovncConsoleItem.vue +0 -89
  236. package/components/novnc/NovncConsoleWrapper.vue +0 -243
  237. package/config/harvester-map.js +0 -44
  238. package/config/harvester-table-headers.js +0 -27
  239. package/config/product/harvester.js +0 -305
  240. package/detail/harvesterhci.io.host/HarvesterHostBasic.vue +0 -364
  241. package/detail/harvesterhci.io.host/HarvesterHostDisk.vue +0 -200
  242. package/detail/harvesterhci.io.host/HarvesterHostNetwork.vue +0 -89
  243. package/detail/harvesterhci.io.host/VirtualMachineInstance.vue +0 -134
  244. package/detail/harvesterhci.io.host/index.vue +0 -243
  245. package/detail/harvesterhci.io.virtualmachinebackup/index.vue +0 -221
  246. package/detail/harvesterhci.io.virtualmachineimage.vue +0 -118
  247. package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineBasics.vue +0 -279
  248. package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineEvents.vue +0 -75
  249. package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineKeypairs.vue +0 -114
  250. package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineMigration.vue +0 -79
  251. package/detail/kubevirt.io.virtualmachine/index.vue +0 -213
  252. package/edit/harvesterhci.io.cloudtemplate.vue +0 -123
  253. package/edit/harvesterhci.io.host/HarvesterDisk.vue +0 -262
  254. package/edit/harvesterhci.io.host/index.vue +0 -533
  255. package/edit/harvesterhci.io.keypair.vue +0 -112
  256. package/edit/harvesterhci.io.managedchart/index.vue +0 -25
  257. package/edit/harvesterhci.io.managedchart/rancher-monitoring.vue +0 -172
  258. package/edit/harvesterhci.io.networkattachmentdefinition.vue +0 -210
  259. package/edit/harvesterhci.io.setting/additional-ca.vue +0 -36
  260. package/edit/harvesterhci.io.setting/backup-target.vue +0 -182
  261. package/edit/harvesterhci.io.setting/http-proxy.vue +0 -79
  262. package/edit/harvesterhci.io.setting/index.vue +0 -201
  263. package/edit/harvesterhci.io.setting/overcommit-config.vue +0 -94
  264. package/edit/harvesterhci.io.setting/ssl-certificates.vue +0 -117
  265. package/edit/harvesterhci.io.setting/ssl-parameters.vue +0 -161
  266. package/edit/harvesterhci.io.setting/support-bundle-image.vue +0 -134
  267. package/edit/harvesterhci.io.setting/support-bundle-namespaces.vue +0 -73
  268. package/edit/harvesterhci.io.setting/vip-pools.vue +0 -244
  269. package/edit/harvesterhci.io.setting/vm-force-reset-policy.vue +0 -81
  270. package/edit/harvesterhci.io.virtualmachinebackup.vue +0 -256
  271. package/edit/harvesterhci.io.virtualmachineimage.vue +0 -364
  272. package/edit/harvesterhci.io.virtualmachinetemplateversion.vue +0 -340
  273. package/edit/harvesterhci.io.volume.vue +0 -195
  274. package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/AccessCredentialsUsers.vue +0 -190
  275. package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/index.vue +0 -212
  276. package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/type/basicAuth.vue +0 -94
  277. package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/type/sshkey.vue +0 -85
  278. package/edit/kubevirt.io.virtualmachine/VirtualMachineCloudConfig/DataTemplate.vue +0 -153
  279. package/edit/kubevirt.io.virtualmachine/VirtualMachineCloudConfig/index.vue +0 -279
  280. package/edit/kubevirt.io.virtualmachine/VirtualMachineCpuMemory.vue +0 -113
  281. package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/__tests__/HarvesterEditNetwork.test.ts +0 -41
  282. package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/base.vue +0 -281
  283. package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/index.vue +0 -142
  284. package/edit/kubevirt.io.virtualmachine/VirtualMachineReserved.vue +0 -54
  285. package/edit/kubevirt.io.virtualmachine/VirtualMachineSSHKey.vue +0 -256
  286. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/index.vue +0 -391
  287. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditContainer.test.ts +0 -40
  288. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditExisting.test.ts +0 -102
  289. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditVMImage.test.ts +0 -117
  290. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditVolume.test.ts +0 -74
  291. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/container.vue +0 -132
  292. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/existing.vue +0 -303
  293. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/vmImage.vue +0 -285
  294. package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/volume.vue +0 -188
  295. package/edit/kubevirt.io.virtualmachine/index.vue +0 -642
  296. package/edit/network.harvesterhci.io.clusternetwork/index.vue +0 -19
  297. package/edit/network.harvesterhci.io.clusternetwork/vlan.vue +0 -134
  298. package/edit/workload/types/Deployment.vue +0 -377
  299. package/edit/workload/types/Generic.vue +0 -295
  300. package/list/harvesterhci.io.cloudtemplate.vue +0 -78
  301. package/list/harvesterhci.io.dashboard/HarvesterUpgrade.vue +0 -211
  302. package/list/harvesterhci.io.dashboard/UpgradeInfo.vue +0 -40
  303. package/list/harvesterhci.io.dashboard/index.vue +0 -752
  304. package/list/harvesterhci.io.host/index.vue +0 -186
  305. package/list/harvesterhci.io.networkattachmentdefinition.vue +0 -167
  306. package/list/harvesterhci.io.setting.vue +0 -241
  307. package/list/harvesterhci.io.virtualmachinebackup.vue +0 -172
  308. package/list/harvesterhci.io.virtualmachineimage.vue +0 -80
  309. package/list/harvesterhci.io.virtualmachinetemplateversion.vue +0 -173
  310. package/list/harvesterhci.io.volume.vue +0 -122
  311. package/list/kubevirt.io.virtualmachine.vue +0 -193
  312. package/mixins/harvester-vm/impl.js +0 -267
  313. package/mixins/harvester-vm/index.js +0 -1357
  314. package/models/harvester/configmap.js +0 -32
  315. package/models/harvester/harvesterhci.io.blockdevice.js +0 -55
  316. package/models/harvester/harvesterhci.io.keypair.js +0 -12
  317. package/models/harvester/harvesterhci.io.setting.js +0 -127
  318. package/models/harvester/harvesterhci.io.supportbundle.js +0 -35
  319. package/models/harvester/harvesterhci.io.upgrade.js +0 -226
  320. package/models/harvester/harvesterhci.io.virtualmachinebackup.js +0 -116
  321. package/models/harvester/harvesterhci.io.virtualmachineimage.js +0 -255
  322. package/models/harvester/harvesterhci.io.virtualmachinerestore.js +0 -43
  323. package/models/harvester/harvesterhci.io.virtualmachinetemplate.js +0 -69
  324. package/models/harvester/harvesterhci.io.virtualmachinetemplateversion.js +0 -227
  325. package/models/harvester/k8s.cni.cncf.io.networkattachmentdefinition.js +0 -32
  326. package/models/harvester/kubevirt.io.virtualmachine.js +0 -850
  327. package/models/harvester/kubevirt.io.virtualmachineinstance.js +0 -142
  328. package/models/harvester/management.cattle.io.managedchart.js +0 -191
  329. package/models/harvester/management.cattle.io.setting.js +0 -40
  330. package/models/harvester/network.harvesterhci.io.clusternetwork.js +0 -100
  331. package/models/harvester/network.harvesterhci.io.nodenetwork.js +0 -34
  332. package/models/harvester/node.js +0 -255
  333. package/models/harvester/persistentvolumeclaim.js +0 -166
  334. package/models/harvester/pod.js +0 -185
  335. package/pages/c/_cluster/harvester/airgapupgrade/index.vue +0 -309
  336. package/pages/c/_cluster/harvester/console/_uid/serial.vue +0 -51
  337. package/pages/c/_cluster/harvester/console/_uid/vnc.vue +0 -52
  338. package/pages/c/_cluster/harvester/index.vue +0 -24
  339. package/pages/c/_cluster/harvester/support/index.vue +0 -154
  340. package/pages/plugins.vue +0 -387
  341. package/pkg/model-loader.lib.js +0 -3
  342. package/promptRemove/kubevirt.io.virtualmachine.vue +0 -164
  343. package/server/verdaccio-middleware.js +0 -56
  344. package/store/harvester-common.js +0 -126
  345. package/utils/validators/vm-datavolumes.js +0 -38
  346. package/utils/validators/vm-image.js +0 -32
  347. package/utils/validators/vm.js +0 -221
package/nuxt.config.js CHANGED
@@ -141,16 +141,16 @@ export default function(dir, _appConfig) {
141
141
  // Package file must have rancher field to be a plugin
142
142
  if (includePkg(name) && f.rancher) {
143
143
  reqs += `$plugin.initPlugin('${ name }', require(\'~/pkg/${ name }\')); `;
144
- }
145
144
 
146
- // // Serve the code for the UI package in case its used for dynamic loading (but not if the same package was provided in node_modules)
147
- // if (!nmPackages[name]) {
148
- // const pkgPackageFile = require(path.join(dir, 'pkg', name, 'package.json'));
149
- // const pkgRef = `${ name }-${ pkgPackageFile.version }`;
145
+ // // Serve the code for the UI package in case its used for dynamic loading (but not if the same package was provided in node_modules)
146
+ // if (!nmPackages[name]) {
147
+ // const pkgPackageFile = require(path.join(dir, 'pkg', name, 'package.json'));
148
+ // const pkgRef = `${ name }-${ pkgPackageFile.version }`;
150
149
 
151
- // serverMiddleware.push({ path: `/pkg/${ pkgRef }`, handler: serveStatic(`${ dir }/dist-pkg/${ pkgRef }`) });
152
- // }
153
- autoImportTypes[`@rancher/auto-import/${ name }`] = generateDynamicTypeImport(`@pkg/${ name }`, path.join(dir, `pkg/${ name }`));
150
+ // serverMiddleware.push({ path: `/pkg/${ pkgRef }`, handler: serveStatic(`${ dir }/dist-pkg/${ pkgRef }`) });
151
+ // }
152
+ autoImportTypes[`@rancher/auto-import/${ name }`] = generateDynamicTypeImport(`@pkg/${ name }`, path.join(dir, `pkg/${ name }`));
153
+ }
154
154
  });
155
155
  }
156
156
 
@@ -185,8 +185,6 @@ export default function(dir, _appConfig) {
185
185
 
186
186
  // Serve up the dist-pkg folder under /pkg
187
187
  serverMiddleware.push({ path: `/pkg/`, handler: serveStatic(`${ dir }/dist-pkg/`) });
188
- // Endpoint to download and unpack a tgz from the local verdaccio rgistry (dev)
189
- serverMiddleware.push(path.resolve(dir, SHELL, 'server', 'verdaccio-middleware'));
190
188
  // Add the standard dashboard server middleware after the middleware added to serve up UI packages
191
189
  serverMiddleware.push(path.resolve(dir, SHELL, 'server', 'server-middleware'));
192
190
 
@@ -202,6 +200,8 @@ export default function(dir, _appConfig) {
202
200
  process.env.DRONE_VERSION ||
203
201
  require('./package.json').version;
204
202
 
203
+ const prime = process.env.PRIME;
204
+
205
205
  const dev = (process.env.NODE_ENV !== 'production');
206
206
  const devPorts = dev || process.env.DEV_PORTS === 'true';
207
207
  const pl = process.env.PL || STANDARD;
@@ -265,7 +265,9 @@ export default function(dir, _appConfig) {
265
265
  dev,
266
266
  pl,
267
267
  perfTest,
268
- rancherEnv
268
+ rancherEnv,
269
+ harvesterPkgUrl: process.env.HARVESTER_PKG_URL,
270
+ api
269
271
  },
270
272
 
271
273
  publicRuntimeConfig: { rancherEnv },
@@ -494,7 +496,8 @@ export default function(dir, _appConfig) {
494
496
  plugins: [
495
497
  // TODO: Browser support
496
498
  // ['@babel/plugin-transform-modules-commonjs'],
497
- ['@babel/plugin-proposal-private-property-in-object', { loose: true }]
499
+ ['@babel/plugin-proposal-private-property-in-object', { loose: true }],
500
+ 'babel-plugin-istanbul'
498
501
  ],
499
502
  }
500
503
  },
@@ -552,7 +555,7 @@ export default function(dir, _appConfig) {
552
555
  plugins: [
553
556
  // Extensions
554
557
  path.relative(dir, path.join(SHELL, 'core/plugins.js')),
555
- path.relative(dir, path.join(SHELL, 'core/plugins-loader.js')),
558
+ path.relative(dir, path.join(SHELL, 'core/plugins-loader.js')), // Load builtin plugins
556
559
 
557
560
  // Third-party
558
561
  path.join(NUXT_SHELL, 'plugins/axios'),
@@ -576,33 +579,33 @@ export default function(dir, _appConfig) {
576
579
  { src: path.join(NUXT_SHELL, 'plugins/nuxt-client-init'), ssr: false },
577
580
  path.join(NUXT_SHELL, 'plugins/replaceall'),
578
581
  path.join(NUXT_SHELL, 'plugins/back-button'),
579
- { src: path.join(NUXT_SHELL, 'plugins/plugin'), ssr: false },
582
+ { src: path.join(NUXT_SHELL, 'plugins/plugin'), ssr: false }, // Load dyanmic plugins
580
583
  { src: path.join(NUXT_SHELL, 'plugins/codemirror-loader'), ssr: false },
584
+ { src: path.join(NUXT_SHELL, 'plugins/formatters'), ssr: false }, // Populate formatters cache for sorted table
581
585
  ],
582
586
 
583
587
  // Proxy: https://github.com/nuxt-community/proxy-module#options
584
588
  proxy: {
585
- '/k8s': proxyWsOpts(api), // Straight to a remote cluster (/k8s/clusters/<id>/)
586
- '/pp': proxyWsOpts(api), // For (epinio) standalone API
587
- '/api': proxyWsOpts(api), // Management k8s API
588
- '/apis': proxyWsOpts(api), // Management k8s API
589
- '/v1': proxyWsOpts(api), // Management Steve API
590
- '/v3': proxyWsOpts(api), // Rancher API
591
- '/v3-public': proxyOpts(api), // Rancher Unauthed API
592
- '/api-ui': proxyOpts(api), // Browser API UI
593
- '/meta': proxyMetaOpts(api), // Browser API UI
594
- '/v1-*': proxyOpts(api), // SAML, KDM, etc
589
+ '/k8s': proxyWsOpts(api), // Straight to a remote cluster (/k8s/clusters/<id>/)
590
+ '/pp': proxyWsOpts(api), // For (epinio) standalone API
591
+ '/api': proxyWsOpts(api), // Management k8s API
592
+ '/apis': proxyWsOpts(api), // Management k8s API
593
+ '/v1': proxyWsOpts(api), // Management Steve API
594
+ '/v3': proxyWsOpts(api), // Rancher API
595
+ '/v3-public': proxyOpts(api), // Rancher Unauthed API
596
+ '/api-ui': proxyOpts(api), // Browser API UI
597
+ '/meta': proxyMetaOpts(api), // Browser API UI
598
+ '/rancherversion': proxyPrimeOpts(api), // Rancher version endpoint
599
+ '/v1-*': proxyOpts(api), // SAML, KDM, etc
595
600
  // These are for Ember embedding
596
- '/c/*/edit': proxyOpts('https://127.0.0.1:8000'), // Can't proxy all of /c because that's used by Vue too
597
- '/k/': proxyOpts('https://127.0.0.1:8000'),
598
- '/g/': proxyOpts('https://127.0.0.1:8000'),
599
- '/n/': proxyOpts('https://127.0.0.1:8000'),
600
- '/p/': proxyOpts('https://127.0.0.1:8000'),
601
- '/assets': proxyOpts('https://127.0.0.1:8000'),
602
- '/translations': proxyOpts('https://127.0.0.1:8000'),
603
- '/engines-dist': proxyOpts('https://127.0.0.1:8000'),
604
- // Plugin dev
605
- '/verdaccio/': proxyOpts('http://127.0.0.1:4873/-'),
601
+ '/c/*/edit': proxyOpts('https://127.0.0.1:8000'), // Can't proxy all of /c because that's used by Vue too
602
+ '/k/': proxyOpts('https://127.0.0.1:8000'),
603
+ '/g/': proxyOpts('https://127.0.0.1:8000'),
604
+ '/n/': proxyOpts('https://127.0.0.1:8000'),
605
+ '/p/': proxyOpts('https://127.0.0.1:8000'),
606
+ '/assets': proxyOpts('https://127.0.0.1:8000'),
607
+ '/translations': proxyOpts('https://127.0.0.1:8000'),
608
+ '/engines-dist': proxyOpts('https://127.0.0.1:8000'),
606
609
  },
607
610
 
608
611
  // Nuxt server
@@ -661,6 +664,49 @@ export default function(dir, _appConfig) {
661
664
  };
662
665
  }
663
666
 
667
+ // Intercept the /rancherversion API call wnad modify the 'RancherPrime' value
668
+ // if configured to do so by the environment variable PRIME
669
+ function proxyPrimeOpts(target) {
670
+ const opts = proxyOpts(target);
671
+
672
+ // Don't intercept if the PRIME environment variable is not set
673
+ if (!prime?.length) {
674
+ return opts;
675
+ }
676
+
677
+ opts.onProxyRes = (proxyRes, req, res) => {
678
+ const _end = res.end;
679
+ let body = '';
680
+
681
+ proxyRes.on( 'data', (data) => {
682
+ data = data.toString('utf-8');
683
+ body += data;
684
+ });
685
+
686
+ res.write = () => {};
687
+
688
+ res.end = () => {
689
+ let output = body;
690
+
691
+ try {
692
+ const out = JSON.parse(body);
693
+
694
+ out.RancherPrime = prime;
695
+ output = JSON.stringify(out);
696
+ } catch (err) {}
697
+
698
+ res.setHeader('content-length', output.length );
699
+ res.setHeader('content-type', 'application/json' );
700
+ res.setHeader('transfer-encoding', '');
701
+ res.setHeader('cache-control', 'no-cache');
702
+ res.writeHead(proxyRes.statusCode);
703
+ _end.apply(res, [output]);
704
+ };
705
+ };
706
+
707
+ return opts;
708
+ }
709
+
664
710
  function onProxyRes(proxyRes, req, res) {
665
711
  if (devPorts) {
666
712
  proxyRes.headers['X-Frame-Options'] = 'ALLOWALL';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rancher/shell",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Rancher Dashboard Shell",
5
5
  "repository": "https://github.com/rancherlabs/dashboard",
6
6
  "license": "Apache-2.0",
@@ -32,125 +32,124 @@
32
32
  "e2e:dev": "start-server-and-test dev https://localhost:8005 cy:open"
33
33
  },
34
34
  "dependencies": {
35
- "@aws-sdk/client-ec2": "^3.1.0",
36
- "@aws-sdk/client-eks": "^3.1.0",
37
- "@aws-sdk/client-kms": "^3.8.1",
38
- "@babel/plugin-proposal-optional-chaining": "^7.14.5",
39
- "@babel/plugin-proposal-private-property-in-object": "^7.14.5",
40
- "@babel/preset-typescript": "^7.15.0",
41
- "@innologica/vue-dropdown-menu": "^0.1.3",
42
- "@novnc/novnc": "^1.2.0",
35
+ "@aws-sdk/client-ec2": "3.1.0",
36
+ "@aws-sdk/client-eks": "3.1.0",
37
+ "@aws-sdk/client-kms": "3.8.1",
38
+ "@babel/plugin-proposal-optional-chaining": "7.14.5",
39
+ "@babel/plugin-proposal-private-property-in-object": "7.14.5",
40
+ "@babel/preset-typescript": "7.16.7",
41
+ "@innologica/vue-dropdown-menu": "0.1.3",
42
+ "@novnc/novnc": "1.2.0",
43
43
  "@nuxt/types": "2.14.6",
44
- "@nuxt/typescript-build": "^2.1.0",
45
- "@nuxtjs/axios": "^5.3.6",
46
- "@nuxtjs/eslint-config-typescript": "^6.0.1",
47
- "@nuxtjs/eslint-module": "^1.1.0",
48
- "@nuxtjs/proxy": "^1.3.3",
49
- "@nuxtjs/style-resources": "^1.2.1",
50
- "@nuxtjs/webpack-profile": "^0.1.0",
51
- "@popperjs/core": "^2.4.0",
52
- "@types/node": "^16.4.3",
53
- "@typescript-eslint/eslint-plugin": "^4.18.0",
54
- "@typescript-eslint/parser": "^4.18.0",
55
- "@vue/cli-plugin-babel": "^4.5.15",
56
- "@vue/cli-plugin-typescript": "^4.5.15",
57
- "@vue/cli-service": "^4.5.13",
44
+ "@nuxt/typescript-build": "2.1.0",
45
+ "@nuxtjs/axios": "5.12.0",
46
+ "@nuxtjs/eslint-config-typescript": "6.0.1",
47
+ "@nuxtjs/eslint-module": "1.2.0",
48
+ "@nuxtjs/proxy": "1.3.3",
49
+ "@nuxtjs/style-resources": "1.2.1",
50
+ "@nuxtjs/webpack-profile": "0.1.0",
51
+ "@popperjs/core": "2.4.4",
52
+ "@types/node": "16.4.3",
53
+ "@typescript-eslint/eslint-plugin": "4.33.0",
54
+ "@typescript-eslint/parser": "4.33.0",
55
+ "@vue/cli-plugin-babel": "4.5.15",
56
+ "@vue/cli-plugin-typescript": "4.5.15",
57
+ "@vue/cli-service": "4.5.15",
58
58
  "@vue/test-utils": "1.2.1",
59
- "@vue/vue2-jest": "^27.0.0",
60
- "add": "^2.0.6",
61
- "ansi_up": "^5.0.0",
62
- "babel-eslint": "^10.0.1",
63
- "babel-plugin-module-resolver": "^4.0.0",
64
- "babel-preset-vue": "^2.0.2",
65
- "browser-env": "^3.2.6",
66
- "comlink": "^4.3.1",
67
- "cookie": "^0.4.0",
68
- "cookie-universal-nuxt": "^2.0.17",
69
- "core-js": "^3.20.3",
70
- "cron-validator": "^1.2.0",
71
- "cronstrue": "^1.92.0",
72
- "cross-env": "^6.0.3",
59
+ "@vue/vue2-jest": "27.0.0",
60
+ "add": "2.0.6",
61
+ "ansi_up": "5.0.0",
62
+ "babel-eslint": "10.1.0",
63
+ "babel-plugin-module-resolver": "4.0.0",
64
+ "babel-preset-vue": "2.0.2",
65
+ "browser-env": "3.3.0",
66
+ "cookie": "0.5.0",
67
+ "cookie-universal-nuxt": "2.1.4",
68
+ "core-js": "3.21.1",
69
+ "cron-validator": "1.2.0",
70
+ "cronstrue": "1.95.0",
71
+ "cross-env": "6.0.3",
73
72
  "css-loader": "4.3.0",
74
- "csv-loader": "^3.0.3",
75
- "cypress": "8.4.1",
76
- "d3": "^5.12.0",
77
- "d3-selection": "^1.3.0",
78
- "dagre-d3": "^0.6.3",
79
- "dayjs": "^1.8.16",
80
- "diff2html": "^2.11.2",
81
- "dompurify": "^2.0.12",
73
+ "csv-loader": "3.0.3",
74
+ "cypress": "10.3.1",
75
+ "d3": "7.3.0",
76
+ "d3-selection": "1.4.1",
77
+ "dagre-d3": "0.6.4",
78
+ "dayjs": "1.8.29",
79
+ "diff2html": "2.11.2",
80
+ "dompurify": "2.0.12",
82
81
  "eslint": "7.32.0",
83
- "eslint-config-standard": ">=12.0.0",
82
+ "eslint-config-standard": "16.0.3",
84
83
  "eslint-import-resolver-node": "0.3.4",
85
84
  "eslint-module-utils": "2.6.1",
86
- "eslint-plugin-cypress": "^2.11.3",
87
- "eslint-plugin-jest": "^23.6.0",
85
+ "eslint-plugin-cypress": "2.12.1",
88
86
  "eslint-plugin-import": "2.23.4",
89
- "eslint-plugin-n": "^15.2.0",
87
+ "eslint-plugin-jest": "24.4.0",
88
+ "eslint-plugin-n": "15.2.0",
90
89
  "eslint-plugin-vue": "7.14.0",
91
- "event-target-shim": "^5.0.1",
92
- "express": "^4.17.1",
93
- "file-saver": "^2.0.2",
94
- "frontmatter-markdown-loader": "^3.6.3",
95
- "identicon.js": "^2.3.3",
96
- "intl-messageformat": "^7.7.2",
97
- "is-url": "^1.2.4",
98
- "jest": "^27.5.1",
99
- "jest-serializer-vue": "^2.0.2",
100
- "jexl": "^2.2.2",
101
- "jquery": "^3.5.0",
102
- "js-cookie": "^2.2.0",
103
- "js-yaml": "^4.1.0",
104
- "js-yaml-loader": "^1.2.2",
105
- "jsdiff": "^1.1.1",
106
- "jsdom-global": "^3.0.2",
107
- "jsonpath-plus": "^6.0.1",
108
- "jsrsasign": "^10.2.0",
109
- "jszip": "^3.7.0",
110
- "lodash": "^4.17.21",
111
- "marked": "^2.0.0",
112
- "nodemon": "^2.0.2",
90
+ "event-target-shim": "5.0.1",
91
+ "express": "4.17.1",
92
+ "file-saver": "2.0.2",
93
+ "frontmatter-markdown-loader": "3.7.0",
94
+ "identicon.js": "2.3.3",
95
+ "intl-messageformat": "7.8.4",
96
+ "is-url": "1.2.4",
97
+ "jest": "27.5.1",
98
+ "jest-serializer-vue": "2.0.2",
99
+ "jexl": "2.2.2",
100
+ "jquery": "3.5.1",
101
+ "js-cookie": "2.2.1",
102
+ "js-yaml": "4.1.0",
103
+ "js-yaml-loader": "1.2.2",
104
+ "jsdiff": "1.1.1",
105
+ "jsdom-global": "3.0.2",
106
+ "jsonpath-plus": "6.0.1",
107
+ "jsrsasign": "10.2.0",
108
+ "jszip": "3.7.0",
109
+ "lodash": "4.17.21",
110
+ "marked": "4.0.17",
111
+ "nodemon": "2.0.4",
113
112
  "nuxt": "2.15.8",
114
- "nyc": "^15.0.0",
115
- "papaparse": "^5.3.0",
116
- "portal-vue": "^2.1.5",
117
- "rancher-icons": "rancher/icons#v2.0.0",
118
- "require-extension-hooks": "^0.3.3",
119
- "require-extension-hooks-babel": "^1.0.0-beta.1",
120
- "require-extension-hooks-vue": "^3.0.0",
121
- "sass": "^1.38.2",
122
- "sass-loader": "10",
123
- "serve-static": "^1.14.1",
124
- "set-cookie-parser": "^2.4.0",
125
- "shell-quote": "^1.7.2",
126
- "sinon": "^8.0.4",
127
- "start-server-and-test": "^1.13.1",
128
- "style-loader": "^1.1.2",
129
- "ts-node": "^8.3.0",
130
- "typescript": "~4.1.5",
131
- "url-parse": "^1.5.0",
132
- "v-tooltip": "^2.0.2",
113
+ "nyc": "15.1.0",
114
+ "papaparse": "5.3.0",
115
+ "portal-vue": "2.1.7",
116
+ "rancher-icons": "rancher/icons#v2.0.3",
117
+ "require-extension-hooks": "0.3.3",
118
+ "require-extension-hooks-babel": "1.0.0",
119
+ "require-extension-hooks-vue": "3.0.0",
120
+ "sass": "1.51.0",
121
+ "sass-loader": "10.2.1",
122
+ "serve-static": "1.14.1",
123
+ "set-cookie-parser": "2.4.6",
124
+ "shell-quote": "1.7.3",
125
+ "sinon": "8.1.1",
126
+ "start-server-and-test": "1.13.1",
127
+ "style-loader": "1.2.1",
128
+ "ts-node": "8.10.2",
129
+ "typescript": "4.1.6",
130
+ "url-parse": "1.5.10",
131
+ "v-tooltip": "2.0.3",
133
132
  "vue": "2.6.14",
134
- "vue-clipboard2": "^0.3.1",
135
- "vue-codemirror": "^4.0.6",
136
- "vue-js-modal": "^1.3.31",
137
- "vue-resize": "^0.4.5",
138
- "vue-select": "^3.13.0",
133
+ "vue-clipboard2": "0.3.1",
134
+ "vue-codemirror": "4.0.6",
135
+ "vue-js-modal": "1.3.35",
136
+ "vue-resize": "0.4.5",
137
+ "vue-select": "3.18.3",
139
138
  "vue-server-renderer": "2.6.14",
140
- "vue-shortkey": "^3.1.7",
139
+ "vue-shortkey": "3.1.7",
141
140
  "vue-template-compiler": "2.6.14",
142
- "vue2-transitions": "^0.3.0",
143
- "vuedraggable": "^2.24.3",
144
- "vuex": "^3.6.2",
145
- "webpack-bundle-analyzer": "^4.5.0",
146
- "webpack-virtual-modules": "^0.4.3",
147
- "xterm": "^4.9.0",
148
- "xterm-addon-fit": "^0.4.0",
149
- "xterm-addon-search": "^0.7.0",
150
- "xterm-addon-web-links": "^0.4.0",
151
- "xterm-addon-webgl": "^0.9.0",
152
- "worker-loader": "^3.0.8",
153
- "yarn": "^1.22.11"
141
+ "vue2-transitions": "0.3.0",
142
+ "vuedraggable": "2.24.3",
143
+ "vuex": "3.6.2",
144
+ "webpack-bundle-analyzer": "4.5.0",
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",
151
+ "worker-loader": "3.0.8",
152
+ "yarn": "1.22.18"
154
153
  },
155
154
  "nyc": {
156
155
  "extension": [
@@ -3,6 +3,7 @@ import { removeObject } from '@shell/utils/array';
3
3
  import { USERNAME } from '@shell/config/cookies';
4
4
  import { LabeledInput } from '@components/Form/LabeledInput';
5
5
  import AsyncButton from '@shell/components/AsyncButton';
6
+ import LocaleSelector from '@shell/components/LocaleSelector';
6
7
  import BrandImage from '@shell/components/BrandImage';
7
8
  import InfoBox from '@shell/components/InfoBox';
8
9
  import CopyCode from '@shell/components/CopyCode';
@@ -30,7 +31,7 @@ export default {
30
31
  name: 'Login',
31
32
  layout: 'unauthenticated',
32
33
  components: {
33
- LabeledInput, AsyncButton, Checkbox, BrandImage, Banner, InfoBox, CopyCode, Password
34
+ LabeledInput, AsyncButton, Checkbox, BrandImage, Banner, InfoBox, CopyCode, Password, LocaleSelector
34
35
  },
35
36
 
36
37
  async asyncData({ route, redirect, store }) {
@@ -164,7 +165,7 @@ export default {
164
165
 
165
166
  kubectlCmd() {
166
167
  return "kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{\"\\n\"}}'";
167
- }
168
+ },
168
169
 
169
170
  },
170
171
 
@@ -393,6 +394,9 @@ export default {
393
394
  {{ nonLocalPrompt }}
394
395
  </a>
395
396
  </div>
397
+ <div class="locale-elector">
398
+ <LocaleSelector mode="login" />
399
+ </div>
396
400
  </template>
397
401
  </div>
398
402
 
@@ -435,4 +439,9 @@ export default {
435
439
  }
436
440
  }
437
441
  }
442
+
443
+ .locale-elector {
444
+ position: absolute;
445
+ bottom: 30px;
446
+ }
438
447
  </style>
@@ -114,7 +114,7 @@ export default {
114
114
  setVendor(plSetting.value);
115
115
  }
116
116
 
117
- const productName = plSetting.default === 'Harvester' ? 'Harvester' : 'Rancher';
117
+ const productName = plSetting.default;
118
118
 
119
119
  const principals = await store.dispatch('rancher/findAll', { type: NORMAN.PRINCIPAL, opt: { url: '/v3/principals' } });
120
120
  const me = findBy(principals, 'me', true);
@@ -1,96 +1,6 @@
1
1
  <script>
2
- import { MANAGEMENT, NORMAN, VIRTUAL_TYPES } from '@shell/config/types';
3
- import ResourceTable from '@shell/components/ResourceTable';
4
- import Loading from '@shell/components/Loading';
5
- import Masthead from '@shell/components/ResourceList/Masthead';
6
- import { AGE, ROLE, STATE, PRINCIPAL } from '@shell/config/table-headers';
7
- import { canViewClusterPermissionsEditor } from '@shell/components/form/Members/ClusterPermissionsEditor.vue';
8
- import Banner from '@components/Banner/Banner.vue';
9
-
10
- /**
11
- * Explorer members page.
12
- * Route: /c/local/explorer/members
13
- */
14
- export default {
15
-
16
- name: 'ExplorerMembers',
17
-
18
- components: {
19
- Banner, Loading, Masthead, ResourceTable
20
- },
21
-
22
- async fetch() {
23
- const clusterRoleTemplateBindingSchema = this.$store.getters[`rancher/schemaFor`](NORMAN.CLUSTER_ROLE_TEMPLATE_BINDING);
24
-
25
- const hydration = [
26
- clusterRoleTemplateBindingSchema ? this.$store.dispatch(`rancher/findAll`, { type: NORMAN.CLUSTER_ROLE_TEMPLATE_BINDING }, { root: true }) : [],
27
- clusterRoleTemplateBindingSchema ? this.$store.dispatch(`management/findAll`, { type: MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING }) : [],
28
- this.$store.dispatch('rancher/findAll', { type: NORMAN.PRINCIPAL }),
29
- this.$store.dispatch(`management/findAll`, { type: MANAGEMENT.USER }),
30
- this.$store.dispatch(`management/findAll`, { type: MANAGEMENT.ROLE_TEMPLATE }),
31
- ];
32
- const [clusterRoleTemplateBindings] = await Promise.all(hydration);
33
- const steveBindings = await Promise.all(clusterRoleTemplateBindings.map(b => b.steve));
34
-
35
- this.$set(this, 'clusterRoleTemplateBindings', steveBindings);
36
- },
37
-
38
- data() {
39
- return {
40
- schema: this.$store.getters[`management/schemaFor`](MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING),
41
- headers: [
42
- STATE,
43
- PRINCIPAL,
44
- ROLE,
45
- AGE
46
- ],
47
- createLocation: {
48
- name: 'c-cluster-product-resource-create',
49
- params: {
50
- product: this.$store.getters['currentProduct'].name,
51
- resource: MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING,
52
- }
53
- },
54
- resource: MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING,
55
- clusterRoleTemplateBindings: [],
56
- VIRTUAL_TYPES
57
- };
58
- },
59
-
60
- computed: {
61
- filteredClusterRoleTemplateBindings() {
62
- return this.clusterRoleTemplateBindings
63
- .filter(b => b.clusterName === this.$store.getters['currentCluster'].id);
64
- },
65
- canManageMembers() {
66
- return canViewClusterPermissionsEditor(this.$store);
67
- },
68
- isLocal() {
69
- return this.$store.getters['currentCluster'].isLocal;
70
- }
71
- },
72
- };
2
+ import ExplorerMembers from '@shell/components/ExplorerMembers';
3
+ export default { components: { ExplorerMembers } };
73
4
  </script>
74
5
 
75
- <template>
76
- <Loading v-if="$fetchState.pending" />
77
- <div v-else>
78
- <Masthead
79
- :schema="schema"
80
- :resource="resource"
81
- :favorite-resource="VIRTUAL_TYPES.CLUSTER_MEMBERS"
82
- :create-location="createLocation"
83
- :create-button-label="t('members.createActionLabel')"
84
- />
85
- <Banner v-if="isLocal" color="error" :label="t('members.localClusterWarning')" />
86
- <ResourceTable
87
- :schema="schema"
88
- :headers="headers"
89
- :rows="filteredClusterRoleTemplateBindings"
90
- :groupable="false"
91
- :namespaced="false"
92
- sub-search="subSearch"
93
- :sub-fields="['nameDisplay']"
94
- />
95
- </div>
96
- </template>
6
+ <template><ExplorerMembers v-bind="$attrs" /></template>