@rancher/shell 0.1.4 → 0.2.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 (170) hide show
  1. package/assets/brand/suse/favicon.png +0 -0
  2. package/assets/images/generic-plugin.svg +1 -7
  3. package/assets/styles/global/_button.scss +1 -0
  4. package/assets/translations/en-us.yaml +129 -53
  5. package/assets/translations/zh-hans.yaml +18 -0
  6. package/components/CommunityLinks.vue +40 -49
  7. package/components/ExplorerProjectsNamespaces.vue +20 -3
  8. package/components/HarvesterServiceAddOnConfig.vue +10 -10
  9. package/components/LazyImage.vue +21 -8
  10. package/components/PromptRemove.vue +2 -2
  11. package/components/ResourceList/Masthead.vue +21 -1
  12. package/components/ResourceList/ResourceLoadingIndicator.vue +0 -8
  13. package/components/ResourceList/index.vue +42 -36
  14. package/components/ResourceTable.vue +19 -0
  15. package/components/SortableTable/THead.vue +311 -70
  16. package/components/SortableTable/advanced-filtering.js +272 -0
  17. package/components/SortableTable/filtering.js +90 -29
  18. package/components/SortableTable/index.vue +486 -280
  19. package/components/Tabbed/index.vue +25 -7
  20. package/components/TypeDescription.vue +10 -1
  21. package/components/fleet/FleetClusters.vue +6 -0
  22. package/components/fleet/FleetRepos.vue +7 -1
  23. package/components/form/Command.vue +5 -0
  24. package/components/form/EnvVars.vue +5 -0
  25. package/components/form/NameNsDescription.vue +3 -1
  26. package/components/form/NodeScheduling.vue +6 -1
  27. package/components/form/PodAffinity.vue +5 -0
  28. package/components/form/ServiceNameSelect.vue +5 -0
  29. package/components/form/ValueFromResource.vue +7 -1
  30. package/components/form/WorkloadPorts.vue +2 -2
  31. package/components/nav/TopLevelMenu.vue +2 -1
  32. package/config/home-links.js +155 -0
  33. package/config/private-label.js +1 -1
  34. package/config/product/manager.js +0 -2
  35. package/config/product/settings.js +1 -0
  36. package/config/product/uiplugins.js +2 -1
  37. package/config/settings.js +3 -1
  38. package/config/uiplugins.js +76 -6
  39. package/config/version.js +17 -0
  40. package/core/plugin.ts +12 -0
  41. package/core/plugins.js +29 -5
  42. package/core/types.ts +6 -0
  43. package/creators/app/{.eslintignore → files/.eslintignore} +0 -0
  44. package/creators/app/{.eslintrc.js → files/.eslintrc.js} +0 -0
  45. package/creators/app/{.vscode → files/.vscode}/settings.json +0 -0
  46. package/creators/app/{babel.config.js → files/babel.config.js} +0 -0
  47. package/creators/app/{nuxt.config.js → files/nuxt.config.js} +0 -0
  48. package/creators/app/{tsconfig.json → files/tsconfig.json} +2 -1
  49. package/creators/app/init +16 -17
  50. package/creators/app/package.json +7 -1
  51. package/creators/pkg/{babel.config.js → files/babel.config.js} +0 -0
  52. package/creators/pkg/{index.ts → files/index.ts} +0 -0
  53. package/creators/pkg/{tsconfig.json → files/tsconfig.json} +13 -12
  54. package/creators/pkg/{vue.config.js → files/vue.config.js} +0 -0
  55. package/creators/pkg/init +1 -1
  56. package/creators/pkg/package.json +1 -1
  57. package/creators/update/init +54 -0
  58. package/creators/update/package.json +20 -0
  59. package/creators/update/upgrade +56 -0
  60. package/creators/update/yarn-error.log +54 -0
  61. package/detail/provisioning.cattle.io.cluster.vue +1 -1
  62. package/detail/workload/index.vue +1 -0
  63. package/edit/persistentvolume/index.vue +48 -13
  64. package/edit/persistentvolumeclaim.vue +31 -13
  65. package/edit/provisioning.cattle.io.cluster/ACE.vue +2 -1
  66. package/edit/provisioning.cattle.io.cluster/DrainOptions.vue +0 -1
  67. package/edit/provisioning.cattle.io.cluster/rke2.vue +52 -43
  68. package/edit/service.vue +1 -1
  69. package/edit/workload/index.vue +19 -9
  70. package/edit/workload/mixins/workload.js +109 -114
  71. package/edit/workload/storage/index.vue +11 -17
  72. package/edit/workload/storage/persistentVolumeClaim/index.vue +5 -0
  73. package/edit/workload/storage/secret.vue +6 -1
  74. package/list/catalog.cattle.io.app.vue +10 -9
  75. package/list/catalog.cattle.io.clusterrepo.vue +6 -61
  76. package/list/cis.cattle.io.clusterscan.vue +12 -12
  77. package/list/fleet.cattle.io.bundle.vue +33 -28
  78. package/list/fleet.cattle.io.cluster.vue +26 -22
  79. package/list/fleet.cattle.io.clustergroup.vue +6 -0
  80. package/list/fleet.cattle.io.clusterregistrationtoken.vue +28 -24
  81. package/list/fleet.cattle.io.gitrepo.vue +25 -14
  82. package/list/helm.cattle.io.projecthelmchart.vue +52 -33
  83. package/list/logging.banzaicloud.io.clusterflow.vue +7 -12
  84. package/list/logging.banzaicloud.io.flow.vue +7 -14
  85. package/list/management.cattle.io.cluster.vue +26 -15
  86. package/list/management.cattle.io.feature.vue +13 -8
  87. package/list/management.cattle.io.user.vue +38 -19
  88. package/list/monitoring.coreos.com.alertmanagerconfig.vue +8 -15
  89. package/list/namespace.vue +14 -1
  90. package/list/node.vue +13 -16
  91. package/list/persistentvolume.vue +16 -9
  92. package/list/persistentvolumeclaim.vue +5 -8
  93. package/list/provisioning.cattle.io.cluster.vue +34 -8
  94. package/list/service.vue +24 -12
  95. package/list/ui.cattle.io.navlink.vue +6 -0
  96. package/list/workload.vue +2 -2
  97. package/middleware/authenticated.js +6 -0
  98. package/mixins/resource-fetch.js +12 -18
  99. package/mixins/resource-manager.js +126 -0
  100. package/models/catalog.cattle.io.uiplugin.js +4 -0
  101. package/models/management.cattle.io.cluster.js +9 -1
  102. package/models/pod.js +15 -5
  103. package/models/provisioning.cattle.io.cluster.js +4 -0
  104. package/models/workload.service.js +10 -0
  105. package/nuxt.config.js +2 -1
  106. package/package.json +1 -1
  107. package/pages/auth/login.vue +10 -0
  108. package/pages/auth/verify.vue +9 -0
  109. package/pages/c/_cluster/apps/charts/install.vue +119 -31
  110. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +108 -0
  111. package/pages/c/_cluster/settings/links.vue +53 -101
  112. package/pages/c/_cluster/settings/performance.vue +90 -7
  113. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +3 -3
  114. package/pages/c/_cluster/uiplugins/InstallDialog.vue +72 -21
  115. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +26 -7
  116. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +2 -7
  117. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +23 -15
  118. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +12 -5
  119. package/pages/c/_cluster/uiplugins/index.vue +223 -72
  120. package/pages/support/index.vue +31 -142
  121. package/plugins/dashboard-store/actions.js +19 -0
  122. package/plugins/dashboard-store/getters.js +20 -3
  123. package/plugins/dashboard-store/mutations.js +13 -7
  124. package/plugins/plugin.js +18 -15
  125. package/plugins/steve/getters.js +12 -0
  126. package/plugins/version.js +21 -0
  127. package/promptRemove/mixin/roleDeletionCheck.js +15 -1
  128. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -7
  129. package/rancher-components/components/BadgeState/BadgeState.spec.ts +12 -0
  130. package/rancher-components/components/BadgeState/BadgeState.vue +107 -0
  131. package/rancher-components/components/BadgeState/index.ts +1 -0
  132. package/rancher-components/components/Banner/Banner.test.ts +13 -0
  133. package/rancher-components/components/Banner/Banner.vue +163 -0
  134. package/rancher-components/components/Banner/index.ts +1 -0
  135. package/rancher-components/components/Card/Card.vue +150 -0
  136. package/rancher-components/components/Card/index.ts +1 -0
  137. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +77 -0
  138. package/rancher-components/components/Form/Checkbox/Checkbox.vue +395 -0
  139. package/rancher-components/components/Form/Checkbox/index.ts +1 -0
  140. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +29 -0
  141. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +343 -0
  142. package/rancher-components/components/Form/LabeledInput/index.ts +1 -0
  143. package/rancher-components/components/Form/Radio/RadioButton.vue +270 -0
  144. package/rancher-components/components/Form/Radio/RadioGroup.vue +235 -0
  145. package/rancher-components/components/Form/Radio/index.ts +2 -0
  146. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +168 -0
  147. package/rancher-components/components/Form/TextArea/index.ts +1 -0
  148. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +107 -0
  149. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +137 -0
  150. package/rancher-components/components/Form/ToggleSwitch/index.ts +1 -0
  151. package/rancher-components/components/Form/index.ts +5 -0
  152. package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +137 -0
  153. package/rancher-components/components/LabeledTooltip/index.ts +1 -0
  154. package/scripts/publish-shell.sh +39 -6
  155. package/scripts/record-deps.js +37 -0
  156. package/scripts/test-plugins-build.sh +8 -5
  157. package/scripts/typegen.sh +84 -0
  158. package/store/auth.js +3 -0
  159. package/store/index.js +12 -3
  160. package/store/type-map.js +2 -0
  161. package/types/shell/index.d.ts +3046 -0
  162. package/utils/favicon.js +8 -2
  163. package/utils/gc/gc-interval.ts +40 -0
  164. package/utils/gc/gc-root-store.js +76 -0
  165. package/utils/gc/gc-route-changed.ts +44 -0
  166. package/utils/gc/gc-types.ts +21 -0
  167. package/utils/gc/gc.ts +282 -0
  168. package/config/footer.js +0 -18
  169. package/creators/pkg/nuxt.config.js +0 -6
  170. package/yarn-error.log +0 -195
Binary file
@@ -1,7 +1 @@
1
- <svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
- <style type="text/css">
3
- .st0{fill:#777;}
4
- </style>
5
- <path d="M29.81,16H29V8.83a2,2,0,0,0-2-2H21A5.14,5.14,0,0,0,16.51,2,5,5,0,0,0,11,6.83H4a2,2,0,0,0-2,2V17H4.81A3.13,3.13,0,0,1,8,19.69,3,3,0,0,1,7.22,22,3,3,0,0,1,5,23H2v8.83a2,2,0,0,0,2,2H27a2,2,0,0,0,2-2V26h1a5,5,0,0,0,5-5.51A5.15,5.15,0,0,0,29.81,16Zm2.41,7A3,3,0,0,1,30,24H27v7.83H4V25H5a5,5,0,0,0,5-5.51A5.15,5.15,0,0,0,4.81,15H4V8.83h9V7a3,3,0,0,1,1-2.22A3,3,0,0,1,16.31,4,3.13,3.13,0,0,1,19,7.19V8.83h8V18h2.81A3.13,3.13,0,0,1,33,20.69,3,3,0,0,1,32.22,23Z" class="clr-i-outline clr-i-outline-path-1 st0"></path>
6
- <rect class="st0" x="0" y="0" width="36" height="36" fill-opacity="0"/>
7
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g fill="#777" transform="translate(0, 0) scale(1, 1) "><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></g></svg>
@@ -139,6 +139,7 @@ fieldset[disabled] .btn {
139
139
  color: var(--disabled-text) !important;
140
140
  &:not(.role-link){
141
141
  background-color: var(--disabled-bg) !important;
142
+ border-color: var(--disabled-bg) !important;
142
143
  }
143
144
  }
144
145
 
@@ -48,6 +48,7 @@ generic:
48
48
  plusMore: "+ {n} more"
49
49
  readFromFile: Read from File
50
50
  readFromFolder: Read from Folder
51
+ reload: Reload
51
52
  register: Register
52
53
  remove: Remove
53
54
  resource: |-
@@ -189,7 +190,7 @@ product:
189
190
  neuvector: NeuVector
190
191
  harvesterManager: Virtualization Management
191
192
  rancher: Rancher
192
- uiplugins: UI Plugins
193
+ uiplugins: Extensions
193
194
 
194
195
  suffix:
195
196
  percent: "%"
@@ -751,8 +752,6 @@ backupRestoreOperator:
751
752
  useDefault: Use the default storage location configured during installation
752
753
  targetBackup: Target Backup
753
754
 
754
-
755
-
756
755
  catalog:
757
756
  app:
758
757
  managed: Managed
@@ -766,6 +765,13 @@ catalog:
766
765
  busy: The related resources will appear when {app} is fully installed.
767
766
  values: Values YAML
768
767
  chart:
768
+ registry:
769
+ label: Container Registry
770
+ tooltip: Container images are pulled from the Cluster Container or, failing that, the System Container Registry Setting. To change this default behavior enter or update the registry here
771
+ custom:
772
+ checkBoxLabel: Container Registry for Rancher System Container Images
773
+ inputLabel: Container Registry
774
+ placeholder: Registry domain and ports, ex. registry.io:5000
769
775
  header:
770
776
  charts: Charts
771
777
  info:
@@ -1565,6 +1571,9 @@ cluster:
1565
1571
  label: Roles
1566
1572
  labels:
1567
1573
  label: Kubernetes Node Labels
1574
+ noAccessBanner: "You do not have access to see this machine pool's configuration."
1575
+ configNotFound: "We could not find this machine pool's configuration. We recommend that you create a new cluster with the desired configuration."
1576
+ noPoolsDisclaimer: You do not have any machine pools defined, click the plus to add one.
1568
1577
  autoReplace:
1569
1578
  label: Auto Replace
1570
1579
  toolTip: If greater than 0, nodes that are unreachable for this duration will be automatically deleted and replaced.
@@ -1580,10 +1589,10 @@ cluster:
1580
1589
  noResults: No results found
1581
1590
  privateRegistry:
1582
1591
  systemDefaultRegistry:
1583
- label: Registry hostname for {vendor} System Container Images
1592
+ label: Registry hostname for Rancher System Container Images
1584
1593
  mode:
1585
- public: Use default global registry for {vendor} System Container Images
1586
- private: Use specified private registry for {vendor} System Container Images
1594
+ public: Use default global registry for Rancher System Container Images
1595
+ private: Use specified private registry for Rancher System Container Images
1587
1596
  advanced: Configure advanced containerd mirroring and registry authentication options
1588
1597
  provider:
1589
1598
  aliyunecs: Aliyun ECS
@@ -1641,6 +1650,7 @@ cluster:
1641
1650
  upcloud: UpCloud
1642
1651
  vmwarevsphere: VMware vSphere
1643
1652
  zstack: ZStack
1653
+ machineinventoryselectortemplate: Elemental Cluster
1644
1654
  providerTag:
1645
1655
  rke2:
1646
1656
  harvester: '{tag}'
@@ -3665,7 +3675,7 @@ persistentVolumeClaim:
3665
3675
  status:
3666
3676
  label: Status
3667
3677
 
3668
- # UI Plugins
3678
+ # Rancher Extensions
3669
3679
  plugins:
3670
3680
  labels:
3671
3681
  builtin: Built-in
@@ -3674,78 +3684,87 @@ plugins:
3674
3684
  installing: Installing ...
3675
3685
  uninstalling: Uninstalling ...
3676
3686
  descriptions:
3677
- experimental: This UI Plugin is marked as experimental
3678
- third-party: This UI plugin is provided by a Third-Party
3687
+ experimental: This Extension is marked as experimental
3688
+ third-party: This Extension is provided by a Third-Party
3689
+ built-in: This Extension is built-in
3679
3690
  error:
3680
- title: Error loading plugin
3681
- message: Could not load plugin code
3691
+ title: Error loading extension
3692
+ message: Could not load extension code
3693
+ generic: Extension error
3694
+ api: This Extension is not compatible with the Extensions API
3695
+ host: This Extension is not compatible with this application
3696
+ version: This Extension is not compatible with this version of Rancher
3697
+ load: An error occurred loading the code for this Extension
3682
3698
  success:
3683
- title: Loaded plugin {name}
3684
- message: Plugin was loaded successfully
3699
+ title: Loaded extension {name}
3700
+ message: Extension was loaded successfully
3685
3701
  developer:
3686
3702
  label: Developer Load
3687
- title: Developer Load Plugin
3688
- prompt: Load a plugin from a URL
3703
+ title: Developer Load Extension
3704
+ prompt: Load an extension from a URL
3689
3705
  fields:
3690
- url: Plugin URL
3691
- name: Plugin module name
3692
- persist: Persist plugin by creating custom resource
3706
+ url: Extension URL
3707
+ name: Extension module name
3708
+ persist: Persist extension by creating custom resource
3693
3709
  info:
3694
3710
  detail: Detail
3695
3711
  versions: Versions
3696
3712
  versionError: Could not load version information
3697
3713
  empty:
3698
- all: No UI Plugins either installed nor available
3699
- available: No UI Plugins available
3700
- installed: No UI Plugins installed
3701
- updates: No UI Plugin updates available
3702
- loadError: An error occurred loading the code for this plugin
3703
- helmError: "An error occurred installing the plugin via Helm"
3714
+ all: Extensions are neither installed or available
3715
+ available: No Extensions available
3716
+ installed: No Extensions installed
3717
+ updates: No updates available for installed Extensions
3718
+ loadError: An error occurred loading the code for this extension
3719
+ helmError: "An error occurred installing the extension via Helm"
3720
+ manageRepos: Manage Repositories
3704
3721
  tabs:
3705
3722
  all: All
3706
3723
  available: Available
3707
3724
  installed: Installed
3708
3725
  updates: Updates
3709
- title: UI Plugins
3726
+ title: Extensions
3727
+ version: "Version: {version}"
3710
3728
  install:
3711
3729
  label: Install
3712
- title: Install UI Plugin {name}
3713
- prompt: "Are you sure that you want to install this UI Plugin?"
3730
+ title: Install Extension {name}
3731
+ prompt: "Are you sure that you want to install this Extension?"
3714
3732
  version: Version
3715
- warnNotCertified: Please ensure that you are aware of the risks of installing UI Plugins from untrusted authors
3733
+ warnNotCertified: Please ensure that you are aware of the risks of installing Extensions from untrusted authors
3716
3734
  update:
3717
3735
  label: Update
3718
- title: Update UI Plugin {name}
3719
- prompt: "Are you sure that you want to update this UI Plugin?"
3736
+ title: Update Extension {name}
3737
+ prompt: "Are you sure that you want to update this Extension?"
3720
3738
  rollback:
3721
3739
  label: Rollback
3722
- title: Rollback UI Plugin {name}
3723
- prompt: "Are you sure that you want to rollback this UI Plugin?"
3740
+ title: Rollback Extension {name}
3741
+ prompt: "Are you sure that you want to rollback this Extension?"
3724
3742
  uninstall:
3725
3743
  label: Uninstall
3726
- title: "Uninstall UI Plugin: {name}"
3727
- prompt: "Are you sure that you want to uninstall this UI Plugin?"
3728
- upgradeAvailable: A newer version of this UI Plugin is available
3744
+ title: "Uninstall Extension: {name}"
3745
+ prompt: "Are you sure that you want to uninstall this Extension?"
3746
+ upgradeAvailable: A newer version of this Extension is available
3747
+ reload: Extensions changed - reload required
3729
3748
  safeMode:
3730
- title: UI Plugins Safe Mode
3731
- message: UI Plugins were not loaded
3749
+ title: Extensions Safe Mode
3750
+ message: Extensions were not loaded
3732
3751
  setup:
3733
- title: UI Plugin Support is not enabled
3752
+ title: Extension support is not enabled
3734
3753
  prompt:
3735
3754
  cant: Automatic installation is not available - required Helm Charts could not be found
3736
- can: You need to install the Plugin Operator
3755
+ can: You need to install the Extension Operator
3737
3756
  install:
3738
- title: Enable UI Plugin Support?
3739
- prompt: This will install the Helm charts to enable Rancher UI Plugin support
3740
- airgap: Un-check if your Rancher installation is air-gapped
3741
- addRancherRepo: Add the Rancher UI Plugins Repository
3757
+ title: Enable Extension Support?
3758
+ prompt: This will install the Helm charts to enable Extension support
3759
+ airgap: The Rancher Extensions Repository provides extensions published by Rancher. Un-check if your Rancher installation is air-gapped
3760
+ addRancherRepo: Add the Rancher Extension Repository
3742
3761
  remove:
3743
- label: Disable UI Plugin Support
3744
- title: Disable UI Plugin Support?
3745
- prompt: This will un-install the Helm charts that enable Rancher UI Plugin support
3762
+ label: Disable Extension Support
3763
+ title: Disable Extension Support?
3764
+ prompt: This will un-install the Helm charts that enable Extension support
3746
3765
  registry:
3747
- title: Remove the Rancher UI Plugins Repository
3748
- prompt: Remove the default UI Plugins Repository
3766
+ title: Remove the Rancher Extensions Repository
3767
+ prompt: The Rancher Extensions Repository provides extensions published by Rancher
3749
3768
 
3750
3769
  prefs:
3751
3770
  title: Preferences
@@ -3785,7 +3804,7 @@ prefs:
3785
3804
  viewInApi: Enable "View in API"
3786
3805
  allNamespaces: Show system Namespaces managed by Rancher (not intended for editing or deletion)
3787
3806
  themeShortcut: Enable Dark/Light Theme keyboard shortcut toggle (shift+T)
3788
- pluginDeveloper: Enable UI Plugin Developer features
3807
+ pluginDeveloper: Enable Extension developer features
3789
3808
  hideDesc:
3790
3809
  label: Hide All Type Descriptions
3791
3810
  helm:
@@ -4238,8 +4257,10 @@ resourceTable:
4238
4257
  namespace: Group by Namespace
4239
4258
  project: Group by Project
4240
4259
  node: Group by Node
4260
+ cluster: Group by Cluster
4241
4261
  groupLabel:
4242
4262
  cluster: "<span>Cluster:</span> {name}"
4263
+ notInACluster: Not in a Cluster
4243
4264
  namespace: "<span>Namespace:</span> {name}"
4244
4265
  notInAMachinePool: "Not In A Deployment"
4245
4266
  machinePool: "<span>Pool:</span> {name}"
@@ -4429,6 +4450,24 @@ servicesPage:
4429
4450
  placeholder: e.g. my.database.example.com
4430
4451
  input:
4431
4452
  label: DNS Name
4453
+ harvester:
4454
+ title: Add-on Config
4455
+ ipam:
4456
+ label: IPAM
4457
+ healthCheckPort:
4458
+ label: Health Check Port
4459
+ healthCheckSuccessThreshold:
4460
+ label: Health Check Success Threshold
4461
+ description: If the number of times the prober continuously detects an address successfully reaches the success threshold, then the backend server can start to forward traffic.
4462
+ healthCheckFailureThreshold:
4463
+ label: Health Check Failure Threshold
4464
+ description: The backend server will stop forwarding traffic if the number of health check failures reaches the failure threshold.
4465
+ healthCheckPeriod:
4466
+ label: Health Check Period
4467
+ healthCheckTimeout:
4468
+ label: Health Check Timeout
4469
+ healthCheckEnabled:
4470
+ label: Health Check
4432
4471
  ips:
4433
4472
  define: Service Ports
4434
4473
  clusterIpHelpText: The Cluster IP address must be within the CIDR range configured for the API server.
@@ -4529,6 +4568,16 @@ sortableTable:
4529
4568
  =1 {{count} {count, plural, =1 {{singularLabel}} other {{pluralLabel}}}}
4530
4569
  other {{from} - {to} of {count} {pluralLabel}}}
4531
4570
  search: Filter
4571
+ in: in
4572
+ addFilter: Add Filter
4573
+ filterFor: Filter for...
4574
+ selectCol: Select a column
4575
+ resetFilters: Reset
4576
+ add: Add
4577
+ tableHeader:
4578
+ noFilter: This column cannot be filtered by
4579
+ groupBy: Group by
4580
+ show: Show
4532
4581
 
4533
4582
  storageClass:
4534
4583
  actions:
@@ -4835,6 +4884,7 @@ tableHeaders:
4835
4884
  clusterCreatorDefault: Cluster Creator Default
4836
4885
  clusterFlow: Cluster Flow
4837
4886
  clusterOutput: Cluster Output
4887
+ cluster: Cluster
4838
4888
  clusters: Clusters
4839
4889
  clustersReady: Clusters Ready
4840
4890
  clusterGroups: Cluster Groups
@@ -6174,7 +6224,7 @@ performance:
6174
6224
  label: Incremental Loading
6175
6225
  setting: You can configure the threshold above which incremental loading will be used.
6176
6226
  description: |-
6177
- When enabled, resources will appear more quickly, but it may take slightly longer to load the entire set of resources. This setting only applies to the following resources: Pods, Deployments, Cron Jobs, Daemon Sets, Jobs, Stateful Sets, Replica Sets, Replication Controllers, Workloads and Secrets.
6227
+ When enabled, resources will appear more quickly, but it may take slightly longer to load the entire set of resources. This setting only applies to resources that come from the Kubernetes API
6178
6228
  checkboxLabel: Enable incremental loading
6179
6229
  inputLabel: Resource Threshold
6180
6230
  manualRefresh:
@@ -6183,7 +6233,7 @@ performance:
6183
6233
  setting: You can configure a threshold above which manual refresh will be enabled.
6184
6234
  buttonTooltip: Refresh list
6185
6235
  description: |-
6186
- When enabled, list data will not auto-update but instead the user must manually trigger a list-view refresh. This setting only applies to the following resources: Pods, Deployments, Cron Jobs, Daemon Sets, Jobs, Stateful Sets, Replica Sets, Replication Controllers, Workloads and Secrets.
6236
+ When enabled, list data will not auto-update but instead the user must manually trigger a list-view refresh. This setting only applies to resources that come from the Kubernetes API
6187
6237
  checkboxLabel: Enable manual refresh of data for lists
6188
6238
  inputLabel: Resource Threshold
6189
6239
  websocketNotification:
@@ -6191,6 +6241,29 @@ performance:
6191
6241
  description: |-
6192
6242
  When checked, websocket notifications will not appear when the UI detects a disconnection.
6193
6243
  checkboxLabel: Disable websocket notifications
6244
+ gc:
6245
+ label: Resource Garbage Collection
6246
+ description: The UI will cache kuberentes resources locally to avoid having to re-fetch them. In some cases this can lead to a large amount of data stored in the browser. Enable this setting to periodically remove them.
6247
+ banner: This setting is experimental and may be removed or updated in future versions.
6248
+ checkboxLabel: Enable Garbage Collection
6249
+ whenRun:
6250
+ description: Update when garbage collection runs
6251
+ intervalCheckBox:
6252
+ label: Run garbage collection periodically
6253
+ interval:
6254
+ inputLabel: Run every
6255
+ route:
6256
+ description: Run garbage collection on page change
6257
+ inputLabel: Page Change
6258
+ howRun:
6259
+ description: Update how garbage collection runs
6260
+ age:
6261
+ description: "Resource types musn't have been accessed within this period to be considered for garbage collection."
6262
+ inputLabel: Resource Age
6263
+ count:
6264
+ description: Resource types must exceed this amount to be considered for garbage collection.
6265
+ inputLabel: Resource Count
6266
+
6194
6267
 
6195
6268
  banner:
6196
6269
  label: Fixed Banners
@@ -6310,13 +6383,16 @@ resourceQuota:
6310
6383
  customLinks:
6311
6384
  displayTitle: Links
6312
6385
  label: Home Links
6313
- description: 'Links to display on the home page.'
6386
+ description: 'Configure the links to display on the home page. You can define your own custom links as well as show or hide default links.'
6314
6387
  restoreDefaults: 'Restore Defaults'
6315
6388
  addLink: Add Link
6316
6389
  restoreSuccess: Default URLs have been restored.
6317
6390
  settings:
6391
+ default: Default Links
6392
+ custom: Custom Links
6318
6393
  keyLabel: Display Text
6319
6394
  valueLabel: URL
6395
+ showLabel: Show
6320
6396
  defaults:
6321
6397
  docs: Docs
6322
6398
  forums: Forums
@@ -6425,4 +6501,4 @@ auth:
6425
6501
  label: Auth Provider
6426
6502
  vncConsole:
6427
6503
  error:
6428
- message: Web VNC console connection is disconnected
6504
+ message: Web VNC console connection is disconnected
@@ -4312,6 +4312,24 @@ servicesPage:
4312
4312
  placeholder: 例如:my.database.example.com
4313
4313
  input:
4314
4314
  label: DNS 名称
4315
+ harvester:
4316
+ title: 附加配置
4317
+ ipam:
4318
+ label: IPAM
4319
+ healthCheckPort:
4320
+ label: 健康检查端口
4321
+ healthCheckSuccessThreshold:
4322
+ label: 健康检查成功阙值
4323
+ description: 如果探针连续检测到某个地址的成功次数达到成功阈值,后端服务器就可以开始转发流量。
4324
+ healthCheckFailureThreshold:
4325
+ label: 健康检查失败阈值
4326
+ description: 如果健康检查失败的数量达到失败阈值,后端服务器将停止转发流量。
4327
+ healthCheckPeriod:
4328
+ label: 健康检查周期
4329
+ healthCheckTimeout:
4330
+ label: 健康检查超时
4331
+ healthCheckEnabled:
4332
+ label: 健康检查
4315
4333
  ips:
4316
4334
  define: 服务端口
4317
4335
  clusterIpHelpText: 集群 IP 地址必须在为 API server 配置的 CIDR 范围内。
@@ -1,10 +1,11 @@
1
1
  <script>
2
- import { options } from '@shell/config/footer';
3
2
  import SimpleBox from '@shell/components/SimpleBox';
4
3
  import Closeable from '@shell/mixins/closeable';
5
4
  import { MANAGEMENT } from '@shell/config/types';
6
5
  import { SETTING } from '@shell/config/settings';
7
6
  import { mapGetters } from 'vuex';
7
+ import { isRancherPrime } from '@shell/config/version';
8
+ import { fetchLinks } from '@shell/config/home-links';
8
9
 
9
10
  export default {
10
11
  name: 'CommunityLinks',
@@ -18,36 +19,23 @@ export default {
18
19
  return {};
19
20
  },
20
21
  },
22
+ isSupportPage: {
23
+ type: Boolean,
24
+ default: false,
25
+ },
21
26
  },
22
27
 
23
28
  mixins: [Closeable],
24
29
 
25
30
  async fetch() {
26
- // If user already have custom links and uiIssueSetting Doc URL set
27
- // This should already be in the uiCustomLinks
28
- try {
29
- this.uiCustomLinks = await this.$store.dispatch('management/find', { type: MANAGEMENT.SETTING, id: SETTING.UI_CUSTOM_LINKS });
30
- } catch (err) {
31
-
32
- }
33
-
34
- // Fallback:
35
- // NB: this.uiIssueSetting is deprecated now.
36
- if (!this.uiCustomLinks) {
37
- try {
38
- this.uiIssuesSetting = await this.$store.dispatch('management/find', { type: MANAGEMENT.SETTING, id: SETTING.ISSUES });
39
- } catch (err) {
40
-
41
- }
42
- }
31
+ this.links = await fetchLinks(this.$store, this.hasSupport, this.isSupportPage, str => this.t(str));
43
32
  },
44
33
 
45
34
  data() {
46
- return { uiCustomLinks: null, uiIssuesSetting: null };
35
+ return { links: {} };
47
36
  },
48
37
 
49
38
  computed: {
50
-
51
39
  ...mapGetters('i18n', [
52
40
  'selectedLocaleLabel'
53
41
  ]),
@@ -56,38 +44,41 @@ export default {
56
44
  return !!Object.keys(this.options).length || !!Object.keys(this.$slots).length;
57
45
  },
58
46
 
47
+ hasSupport() {
48
+ return isRancherPrime() || this.$store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.SUPPORTED )?.value === 'true';
49
+ },
50
+
59
51
  options() {
60
- // Link options are provided
61
- if (Object.keys(this.linkOptions).length > 0) {
62
- return this.linkOptions;
52
+ // Use linkOptions if provided - used by Harvester
53
+ if (this.linkOptions && Object.keys(this.linkOptions).length) {
54
+ const options = [];
55
+
56
+ Object.keys(this.linkOptions).forEach((key) => {
57
+ options.push({
58
+ key,
59
+ label: this.t(key),
60
+ value: this.linkOptions[key]
61
+ });
62
+ });
63
+
64
+ return options;
63
65
  }
64
66
 
65
- // Custom links set from settings
66
- if (!!this.uiCustomLinks?.value) {
67
- try {
68
- const customLinks = JSON.parse(this.uiCustomLinks.value);
69
-
70
- if (Array.isArray(customLinks)) {
71
- return customLinks.reduce((prev, curr) => {
72
- prev[curr.key] = curr.value;
73
-
74
- return prev;
75
- }, {});
76
- }
77
- } catch (e) {
78
- console.error('Could not parse custom links setting', e); // eslint-disable-line no-console
79
- }
67
+ // Combine the links
68
+ const all = [];
69
+
70
+ if (this.links.custom) {
71
+ all.push(...this.links.custom);
80
72
  }
81
73
 
82
- // Fallback
83
- return options(false, this.uiIssuesSetting?.value);
84
- },
74
+ if (this.links.defaults) {
75
+ all.push(...this.links.defaults.filter(link => link.enabled));
76
+ }
77
+
78
+ return all;
79
+ }
85
80
  },
86
81
  methods: {
87
- getLabel(label) {
88
- return this.$store.getters['i18n/withFallback'](`customLinks.defaults.${ label }`, null, label);
89
- },
90
-
91
82
  show() {
92
83
  this.$modal.show('wechat-modal');
93
84
  },
@@ -106,11 +97,11 @@ export default {
106
97
  {{ t('customLinks.displayTitle') }}
107
98
  </h2>
108
99
  </template>
109
- <div v-for="(value, name) in options" :key="name" class="support-link">
110
- <n-link v-if="value.startsWith('/') " :to="value">
111
- {{ getLabel(name) }}
100
+ <div v-for="link in options" :key="link.label" class="support-link">
101
+ <n-link v-if="link.value.startsWith('/') " :to="link.value">
102
+ {{ link.label }}
112
103
  </n-link>
113
- <a v-else :href="value" rel="noopener noreferrer nofollow" target="_blank"> {{ getLabel(name) }} </a>
104
+ <a v-else :href="link.value" rel="noopener noreferrer nofollow" target="_blank"> {{ link.label }} </a>
114
105
  </div>
115
106
  <slot />
116
107
  <div v-if="selectedLocaleLabel === t('locale.zh-hans')" class="support-link">
@@ -10,12 +10,14 @@ import { mapPref, GROUP_RESOURCES, ALL_NAMESPACES } from '@shell/store/prefs';
10
10
  import MoveModal from '@shell/components/MoveModal';
11
11
  import { defaultTableSortGenerationFn } from '@shell/components/ResourceTable.vue';
12
12
  import { NAMESPACE_FILTER_ALL_ORPHANS } from '@shell/utils/namespace-filter';
13
+ import ResourceFetch from '@shell/mixins/resource-fetch';
13
14
 
14
15
  export default {
15
16
  name: 'ListProjectNamespace',
16
17
  components: {
17
18
  Masthead, MoveModal, ResourceTable
18
19
  },
20
+ mixins: [ResourceFetch],
19
21
 
20
22
  props: {
21
23
  createProjectLocationOverride: {
@@ -42,14 +44,15 @@ export default {
42
44
  return;
43
45
  }
44
46
 
45
- this.namespaces = await this.$store.dispatch(`${ inStore }/findAll`, { type: NAMESPACE });
47
+ await this.$fetchType(NAMESPACE);
46
48
  this.projects = await this.$store.dispatch('management/findAll', { type: MANAGEMENT.PROJECT, opt: { force: true } });
47
49
  },
48
50
 
49
51
  data() {
50
52
  return {
53
+ loadResources: [NAMESPACE],
54
+ loadIndeterminate: true,
51
55
  schema: null,
52
- namespaces: [],
53
56
  projects: [],
54
57
  projectSchema: null,
55
58
  MANAGEMENT,
@@ -66,6 +69,17 @@ export default {
66
69
 
67
70
  computed: {
68
71
  ...mapGetters(['currentCluster', 'currentProduct']),
72
+ namespaces() {
73
+ const inStore = this.$store.getters['currentStore'](NAMESPACE);
74
+
75
+ return this.$store.getters[`${ inStore }/all`](NAMESPACE);
76
+ },
77
+ loading() {
78
+ return !this.currentCluster || this.namespaces.length ? false : this.$fetchState.pending;
79
+ },
80
+ showIncrementalLoadingIndicator() {
81
+ return this.perfConfig?.incrementalLoading?.enabled;
82
+ },
69
83
  isNamespaceCreatable() {
70
84
  return (this.schema?.collectionMethods || []).includes('POST');
71
85
  },
@@ -309,6 +323,9 @@ export default {
309
323
  :favorite-resource="VIRTUAL_TYPES.PROJECT_NAMESPACES"
310
324
  :create-location="createProjectLocation"
311
325
  :create-button-label="t('projectNamespaces.createProject')"
326
+ :show-incremental-loading-indicator="showIncrementalLoadingIndicator"
327
+ :load-resources="loadResources"
328
+ :load-indeterminate="loadIndeterminate"
312
329
  />
313
330
  <ResourceTable
314
331
  ref="table"
@@ -319,7 +336,7 @@ export default {
319
336
  :rows="filteredRows"
320
337
  :groupable="true"
321
338
  :sort-generation-fn="sortGenerationFn"
322
- :loading="$fetchState.pending || !currentCluster"
339
+ :loading="loading"
323
340
  group-tooltip="resourceTable.groupBy.project"
324
341
  key-field="_key"
325
342
  v-on="$listeners"