Remove resources from the store if they meet certain criteria. This will reduce the memory footprint of the dashboard and load on the backend (less watchers for large collections)
- GC is disabled by default and can be enabled via the Global Settings --> Performance tab
- User can configure
- The age in milliseconds in which a resource has to exceed in order to be gc'd
- The count which a resource has to exceed in order to be gc'd
- GC occures in stores that have it enabled
- ATM this is just the `cluster` store... but could be enabled for dashboard-store's such as the harvester one (one liner plus optional `gcIgnoreTypes` override for ignoring types)
- GC will be kicked off in two cases
- Route Change for a logged in state
- At a given interval
- Resource type _not_ GC'd if
- The store is ignoring the type
- For example the `cluster` store doesn't want to gc things like `schema` and `count`
- We're going to a page for that resource (list, detail, etc)
- For example don't GC pods if we're going to a pods page
- The last time the resource was accessed was recently
- We store the resource accessed time via hooking into actions and getters
- Setting the last accessed time will cause watchers of that type to trigger (only an issue for duplicate watchers)... but importantly not watchers of other types
- The resource is being used in the current page/context
- We store the route changed time and compare it to the resource accessed time
- There's too few resources
- We might as well keep them to avoid a network request to re-populate
// TODO:
- Should additional features be added to preferences
- if GC on route change is enabled
- if GC on interval is enabled, and how often it runs
- Sensible default preferences
- Remove some logging
- my custom way no longer worked
- for some reason checkClusterChanging wasn't firing quick enough anymore
- the order of things looked correct (it should have disabled the outlets via clusterChanging before the auth middleware runs)
- however the old explorer page errored when navigating to something outside of the explorer product
- beef up the simpler route change handler
- add something to try to catch the change of product as well
- uses similar approach, don't show anything until the store is up to date with the route
- harvester store is a steve store that now lives in the plugin
- harvester `loadVirtual` replaced with a shortened `loadCluster` in it's own store
- Also fix xterm css import
- previously combined request for user and principal together, instead of making them sequentially
- this should have been safe (both calls will fail or succeed given auth state)...
- ... might not be given ways requests are handled (i chickened out)
Home Page
- Don't block whole page on loading of mgmt and prov clusters
- Use table `loading` indicator when clusters are loading
- Use correct cluster count (with harv cluster filter) - To confirm
Cluster Dashboard
- EventsTable - use standard table loading indicator
- Don't block on fetch at all (or show page loading indicator)
- Remove fetch for nodeTemplates and rke1NodePools. I went through a lot of code and don't think these are needed
- Reminaing calls for Node and Metrics can happen at the same time
- Forget additional resource types when leaving page
- Optimise fetch of management nodes
Pre-Page optimisations
- Authentication Mixin
- if applicable, fetch `principal` 'me' same time as `user` 'me'
Other tweaks
- Don't show AwsComplianceBanner or AzureWarning until management store ready
- This was broken by https://github.com/rancher/dashboard/pull/6261
- The `activeNamespaceCache` depends on the product (fleet requires workspaces, everything else namespaces)
- This needs updating when going to or from fleet
NOTE - On `head` (but not `ui-dashboard-index` `latest`) refreshing on the explorer pods page does not show the correct namespace filtered pods
Small tidyup for `activeNamespaceCache` and `activeNamespaceFilters` getters
Maintains tennets that the cluster context doesn't change unless it has to
- User navigates to a cluster with a different id
- User navigates to a different pkg (note - not product!)
Functional changes
- when 'forgetting' the old cluster ensure we also 'forget' the cluster id
- catches cases where cluster was reset due to being in a different package
- don't 'forget' the cluster id if we haven't 'forgotten' the cluster
- catches cases where we retain the cluster even though we've exited cluster context (cluster --> home page)
Non-functional changes
- update mutation method names to be more descriptive
- clusterChanged --> clusterReady
- setCluster --> clusterId
- update some comments
* Doc
* v0.7.0
* v0.7.1
* v0.7.2
* Add creators
* v0.1.14
* v0.1.17
* Add Yarn link
* Tidy ups and typos
* Allow models to be loaded from plugins
* v0.1.15
* v0.1.18
* v0.6.6
* Improve readme, fix cyperss log msg
* v0.1.17
* v0.1.19
* v0.6.7
* v0.6.8
* Fix logo ref when in shell
* Fix lint issues
* Fix error in example
* Fix script to work on linux
* Add ability to revert moves without losing changes
* Fix bug with custom models in a plugin
* Fix build of UI packages
* Add dist-pkg to .eslintignore
* Pull out util from extend-router to prevent router being pulled in UI packages
* Update PLUGINS.md
* Remove duplicate dependency
* Reduce size of built UI packages
* Share codemirror. Other tidy ups
* Further improvements
* Tidy ups to support i18n in plugins
* Clen up add comments
* More clean-ups and comments added
* Rename from extension to plugin
* Missed file in rename
* v0.6.9
* TIdy ups following rename
* v0.1.20
* v0.1.21
* More refactor and tidy up
* v0.1.22
* v0.1.18
* v0.1.19
* v0.1.23
* v0.6.10
* Version Packages. Improve naming. Unload.
* v0.6.11
* v0.1.20
* v0.1.21
* v0.1.24
* v0.6.12
* v0.1.25
* v0.1.22
* v0.6.13
* Fix issues when plugin is builtin
* Add missing files
* Fix lint issues and watcher ignores
* Fixes following review
* v0.1.28
* v0.1.31
* v0.6.20
* Fix coer.js version
* Fix bug where plugins included via npm don't work
* Changes post merge
* Move plugins doc to dev guide, add note at top of README
* Update cypress version
* Add note about the reset --hard in rejig -d
* Fixes post merge
* Rename @ranch to @rancher and ad plugins
* Improve routes support, add package assets support
* Add uninstall hooks and pass interal opts
* Fix rejig script
* Minor fixes
* disable consent banner text overflow wrap
* add additional metadata to workload detail view
* minor css tweak
* Routing tweaks
- attempted to improve `addRoutes` typing, failed a lot
- improved typings in plugins.ts
- added "@pkg/*" entry and vue-shim (for importing components) to the pkg creator
- fixed some linting
- safely fail when Verdaccio isn't running
- fixed some typos
* Remove frontmatter-markdown-loader reference from nuxt-config
* Add annotation to stop upgrades for managed charts
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
* Use correct name for Network Attachment Definition Resource (#5579)
* Fix heading levels in Account and API keys page (#5563)
* SortableTable Performance: Optimise row mouse over/leave handlers (#5550)
Co-authored-by: Richard Cox <richard.cox@suse.com>
* Keep the check for fleet bundle ID
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
* Revert "Remove frontmatter-markdown-loader reference from nuxt-config"
This reverts commit 29ef6f2f7b.
* Exclude creators from dashboard build
* Revert "Exclude creators from dashboard build"
This reverts commit 8ede93ee7c.
* Ingore creators via tsconfig
- We're still susceptible with vue shims in multiple packages
- Need to determine why packages can't use shim from route
- Probably need to move `./vue-shim.d.ts` in to `./shell`. Needs testing with a pkg that imports a component
* warn on adding windows node to cutom cluster
* Display custom error message when login fails. (#5582)
* change rke2 upgradeStrategy to 1 concurrent controlplane and worker (#5580)
Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>
* update endpoint display, fix ready status for daemonset type
* Fix Sortable Tble SSR (#5599)
* Sortable Table: Fix broken props to slot (#5600)
* expanded error check to include simple type
* fixed error check logic
* Fix async buton wobble with spinner (#5586)
* Add Pod restart count to workload detail page
* Can scale workload from workload detail page
* Enable source map in Nuxt/Webpack configuration for debugging (#5590)
* Move hardcoded values for roles in his own config file
* Allow to set default values also for Clusters and Namespaces
* Allow local cluster to be hidden
* Initialize always auth errors as empty list
* Add translation for snapshot group
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
* Enable s3 storage in rke2 cluster config
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
* Group by snapshot location
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
* After rejig
* Prevent injection of malformed errors in the generic resource form component
* New Epinio pkg, and updates to dashboard (core, pkg process)
* Remove epinio-select
* correct @shell// reference
* Fix filtering issue
- store/index suffered a bad merge
* Add hide-local-cluster to the settings page
* Fix node table column sorting (#5611)
* Fix issue where private registry auth can be changed in view mode (#5617)
* Change title of support block on home page when custom link set (#5547)
* Tidying up
* Add feedback to the copy kubeconfig header button (#5628)
* Add feedback to the copy kubeconfig header button
* Minor improvement
* Get rke3 and k3s latest versions from settings (#5608)
* Revert previous change and avoid watching spoofed types
* Move the group-by string to computed prop
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
* Use computed instead of method, use Array.isArray instead of lodash isArray
* Ensure auth provider note appears consistently within form instead of new floating button section
- some auth providers already had this
- possibly better ux to add to top, but that area is already busy
* Fix bug where delay loading only worked on scroll with live columns (#5635)
* Inconsistencies with Cluster metrics across the UI (#5542)
* fix num pods being displayed on the homepage cluster list + set mem to gib for ram on homepage cluster list
* show total number of nodes rather that useful nodes in cluster dashboard view + remove reserved info for CPU and MEM in cluster table in homepage + fix pods usage in nodes list view + clear console logs
* cleanup
* correctly wire PodsUsage as a formatter + display N/A when usage is zero in nodes list values for CPU, MEM, PODS
* add loader icon to PodsUsage formatter
* add string translation to n/a in percentageBar formatter
* add delayedLoading to PodsUsage formatter
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro-2.local>
Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>
* Enable filtering by project name on project/namespaces paeg (#5636)
* Fixes post merge
* Rename core-store to dashboard-store
- contains TODO: RCs to resolve
* Tidy up/imporve nav hooks
* Fix some todo's, epinio routing product
* refactor detailtop
* Hide NeuVector product if `cattle-neuvector-system` does not exist
- As per request at https://github.com/rancher/dashboard/issues/5556#issuecomment-1098270110
- fixes#5556
- alternative to #5604
* Fix a number of areas where the sticky footer consumes large amounts of space
- Fixes#5643
- Mostly caused by non-standard ways the CruResource was being used
Effected Areas / Places to test
Note - Only need to visit pages, shouldn't need to make any changes to resources
- Cluster create/import screens (types, credentials (create new / existing), import, rke2)
- Auth providers (shortest form is keycloak saml)
- Create/Edit resource types - project, namespace, some random others
- Create/Edit resource types that have sub-types (secrets, workloads, OPA Gateway / Constraints)
Also Addressed
- Only show top border of the footer if CruResource is in edit view
- Fixed hide of errors
* Fix conditional showing of Group `Assign To` and `Refresh` buttons
Buttons should only show if
- There is a non-local auth provider enabled
- The user has the correct permissions for the relevent action
Fixes#4897
* Fix live expiry badge used on api keys table
* Hide local cluster in LandingPagePreference and api key (token) list
* HARVESTER: Fix Grafana metrics reload failure
* Address some TODOs
* minor fixes
* Rename i18n to l10n, make use of default folders
* Improve adding multiple routes
* Config map view inconsistent for binary data (#5602)
* Fix Config map view inconsistent for binary data
Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro-2.local>
* check for existance of limit prop so that deleting a project doesnt silently fail (#5661)
Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>
* Changes following review
* Fix CruResource `Edit as Yaml` feature
- ensure sticky buttons are stuck at bottom
- doesn't apply sticky buttons to direct `Edit as Yaml` feature outside of CruResource
* Fix navigation & ns filter bugs
- nav from explorer to epinio cluster (errors in console)
- nav from epinio cluster to explorer (ns filter broken)
* Remove epinio ns and config validation
- this was the process that will be replaced with Sean's work
- it's suffered bit rot and was broken after the merge
- not running in places
- it visually broke the labelled select (in multiple places)
* remaining todos
* fixes following validation change
* fix bad yarn lock file
Co-authored-by: Neil MacDougall <nmacdougall@suse.com>
Co-authored-by: Neil MacDougall <nwmac@users.noreply.github.com>
Co-authored-by: Neill Somerville <neill.somerville@gmail.com>
Co-authored-by: Phillip Rak <rak.phillip@gmail.com>
Co-authored-by: Nancy Butler <42977925+mantis-toboggan-md@users.noreply.github.com>
Co-authored-by: Shavin Fonseka <Shavindra@users.noreply.github.com>
Co-authored-by: Alexandre Alves <97888974+aalves08@users.noreply.github.com>
Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>
Co-authored-by: Catherine Luse <catherine.luse@gmail.com>
Co-authored-by: Giuseppe Leo <giuseppe.leo@suse.com>
Co-authored-by: cnotv <giuseppe.leo@suse.de>
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro-2.local>
Co-authored-by: n313893254 <n313893254@126.com>
# Conflicts:
# shell/assets/translations/en-us.yaml
# shell/components/CruResource.vue
# shell/components/ResourceDetail/Masthead.vue
# shell/components/ResourceList/Masthead.vue
# shell/components/SortableTable/index.vue
# shell/components/form/KeyValue.vue
# shell/components/form/LabeledInput.vue
# shell/components/form/NameNsDescription.vue
# shell/components/form/NotificationSettings.vue
# shell/components/formatter/PodsUsage.vue
# shell/components/nav/Header.vue
# shell/config/product/neuvector.js
# shell/detail/workload/index.vue
# shell/edit/provisioning.cattle.io.cluster/CustomCommand.vue
# shell/models/cluster.x-k8s.io.machinedeployment.js
# shell/models/harvester/kubevirt.io.virtualmachineinstance.js
# shell/models/workload.js
# shell/pages/c/_cluster/settings/banners.vue
# shell/plugins/steve/actions.js
# shell/store/type-map.js
* Doc
* v0.7.0
* v0.7.1
* v0.7.2
* Add creators
* v0.1.14
* v0.1.17
* Add Yarn link
* Tidy ups and typos
* Allow models to be loaded from plugins
* v0.1.15
* v0.1.18
* v0.6.6
* Improve readme, fix cyperss log msg
* v0.1.17
* v0.1.19
* v0.6.7
* v0.6.8
* Fix logo ref when in shell
* Fix lint issues
* Fix error in example
* Fix script to work on linux
* Add ability to revert moves without losing changes
* Fix bug with custom models in a plugin
* Fix build of UI packages
* Add dist-pkg to .eslintignore
* Pull out util from extend-router to prevent router being pulled in UI packages
* Update PLUGINS.md
* Remove duplicate dependency
* Reduce size of built UI packages
* Share codemirror. Other tidy ups
* Further improvements
* Tidy ups to support i18n in plugins
* Clen up add comments
* More clean-ups and comments added
* Rename from extension to plugin
* Missed file in rename
* v0.6.9
* TIdy ups following rename
* v0.1.20
* v0.1.21
* More refactor and tidy up
* v0.1.22
* v0.1.18
* v0.1.19
* v0.1.23
* v0.6.10
* Version Packages. Improve naming. Unload.
* v0.6.11
* v0.1.20
* v0.1.21
* v0.1.24
* v0.6.12
* v0.1.25
* v0.1.22
* v0.6.13
* Fix issues when plugin is builtin
* Add missing files
* Fix lint issues and watcher ignores
* Fixes following review
* v0.1.28
* v0.1.31
* v0.6.20
* Fix coer.js version
* Fix bug where plugins included via npm don't work
* Changes post merge
* Move plugins doc to dev guide, add note at top of README
* Update cypress version
* Add note about the reset --hard in rejig -d
* Fixes post merge
* Rename @ranch to @rancher and ad plugins
* Improve routes support, add package assets support
* Add uninstall hooks and pass interal opts
* Fix rejig script
* Minor fixes
* Routing tweaks
- attempted to improve `addRoutes` typing, failed a lot
- improved typings in plugins.ts
- added "@pkg/*" entry and vue-shim (for importing components) to the pkg creator
- fixed some linting
- safely fail when Verdaccio isn't running
- fixed some typos
* Remove frontmatter-markdown-loader reference from nuxt-config
* Revert "Remove frontmatter-markdown-loader reference from nuxt-config"
This reverts commit 29ef6f2f7b.
* Exclude creators from dashboard build
* Revert "Exclude creators from dashboard build"
This reverts commit 8ede93ee7c.
* Ingore creators via tsconfig
- We're still susceptible with vue shims in multiple packages
- Need to determine why packages can't use shim from route
- Probably need to move `./vue-shim.d.ts` in to `./shell`. Needs testing with a pkg that imports a component
* After rejig
Co-authored-by: Neil MacDougall <nmacdougall@suse.com>
Co-authored-by: Neil MacDougall <nwmac@users.noreply.github.com>